引自免费微信小程序:皆我百晓生
在C语言中,指针是一个特殊的变量类型,它用来存储内存地址。当声明一个指针变量并将其初始化为另一个变量的地址时,例如 int* pointer = &a;
这一行,pointer
变量就存储了整型变量 a
的地址。
在C语言中,我们用 *
运算符来解引用(dereference)一个指针,这意味着我们可以获取指针所指向的变量的值。所以当你写 *pointer
时,实际上是在说“给我 pointer
所指向的那个位置上的值”。
在你的例子中,*pointer
就是访问 a
变量的值,因为 pointer
存储的是 a
的地址。当你执行 printf("通过指针引用变量a=%d\n", *pointer);
时,实际上是输出了 a
变量的值(即100),而不是 pointer
变量自身的值。
下面是对代码逐行解释:
#include<stdio.h>
:包含标准输入/输出库。int main(){...}
:程序入口。int a=100;
:定义整型变量 a
并赋值为100。int* pointer=&a;
:定义整型指针变量 pointer
并将其指向 a
的地址。printf("通过变量名引用变量a=%d\n",a);
:打印变量 a
的值(100)。printf("通过指针引用变量a=%d\n", *pointer);
:打印指针 pointer
指向的变量(即 a
)的值(100)。printf("变量a的地址=%p\n",&a);
:打印变量 a
的地址。printf("指针pointer的值=%p\n",pointer);
:打印指针 pointer
自身的值(地址)。printf("指针变量pointer的地址=%p\n",&pointer);
:打印指针变量 pointer
的地址,这与 a
的地址不同,因为它是指向 a
地址的指针。return 0;
:表示正常退出程序。}
:结束 main()
函数。
总结一下,pointer
是一个存储 a
地址的变量,而 *pointer
则用于获取 a
变量的值。