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;
}

在此示例中,我们声明了一个整数 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 和指针变量的值和地址。