C 语言中的指针

C 语言编程中的指针是最强大的概念,因为指针变量包含或持有另一个变量的地址。它们对于持有变量的地址非常有用。通过地址,我们可以访问相关变量内部的值。或者,我们可以操作存储在该地址中的值。因此,对指针所做的任何更改都会反映在原始值上。

在计算机世界中,系统会根据需求为我们存储的每个变量分配内存(以字节为单位)。这意味着每个变量都有值和内存。例如,在 C 语言的指针示例中:

int x = 10;

int *p;

x 是变量名。

10 是与 x 关联或赋给 x 的值。

10 存储在某个内存位置,比如 1042。

因此,指针 *p 将被分配到 1042,并访问 x 内部的值,即 10。

C 指针语法

该编程语言中指针的语法如下所示。

Data_Type *Pointer_Name;

Pointer_Name:指针的名称。

(*):它表示该变量是一个指针。

数据类型:C 指针变量包含其他变量的地址。因此,声明其类型没有用处。语法中的数据类型不属于指针,而是属于与指针关联的变量。例如:

int *x;

这意味着指针变量 x 只能分配给整数。如果将指针 x 分配给浮点型或字符型数据类型,则会产生奇怪的结果。比如说:

int a;

float b;

x = &a; // Correct because we are assigning integer variable

x = &b; //Wrong because we are assigning float variable

众所周知,&a 是 a 的地址,而 *x 是通过 x 访问到的值。

x = &a; 意味着我们实际上是将 a 的地址赋给 x。

要访问指针变量内部的值,我们可以简单地使用 *x。

int *x;

*x = 20;

printf("%d",*x)

要访问指针的地址。

printf("%d", x)

C 指针示例

该程序允许用户输入任何正整数。通过变量的地址,访问用户输入的值。接下来,使用指针变量,更改用户输入的值。

#include <stdio.h>

int main()
{
  int *P,Number;
 
  printf("\n Please Enter any Positive Integer");
  scanf("%d", &Number);
  
  printf("\n Value Inside the Number = %d \n", Number);
  printf(" Address of the Number = %d\n",&Number);
  
  P = &Number;
  printf("\n Value Inside the Pointer P = %d \n", *P);
  printf(" Address of the Pointer P = %d\n", P);

  *P = 20;
  printf("\n Value Inside the Pointer P = %d \n", *P);
  printf(" Address of the Pointer P = %d\n", P);
  printf(" Value Inside the Number = %d \n", Number);
  printf(" Address of the Number = %d\n",&Number);

  return 0;
}
Pointers in C Programming

在此示例中,我们声明了一个整数 Number 和一个整数类型的指针 P。

printf 语句要求用户输入任何正整数。scanf 语句将用户输入的值赋给我们已经声明的 Number。

第一条语句将打印 Number 内部的值(用户输入的值),下一条语句将打印所声明数字的地址。

在下一行中,我们将 Number 的地址赋给了 C 指针的地址。这里,P 是我们已经声明的指针 (*P) 的地址,而 &Number 是 Number 的地址。

P = &Number;

它打印 P 内部的值。这里,P 的地址被赋给了 Number 的地址。因此,我们实际上打印的是用户输入的值,即 Number。

printf("\n Value Inside the Pointer P = %d \n", *P);

打印指针的地址,该地址显然与 Number 的地址相同。

printf(" Address of the Pointer P = %d\n", P);

在下一行中,我们将 20 赋给 *P。

*P = 20;

这意味着,

  • *P 内部的值 = 20
  • 根据上面的 (P = &Number),指针变量和 Number 变量在此编程中的地址是相同的。这意味着我们不仅在改变 *p 的值,而且实际上也在改变 Number 变量内部的数据 (Number)。
  • 这意味着用户在 Number 中输入的值将被更改为 20。

最后四条 printf 语句将打印 Number 和指针变量的值和地址。