在C语言中可以认为一切皆地址。
当声明变量时,程序都干了什么?
int a=10;
1 根据函数类型申请一块内存,并将内存的名字命名为a
2 将10以二进制补码形式写入内存//赋值
我们将这种通过变量名引用变量,由系统自动完成变量名和其存储地址之间的转换的方式,称为变量的"直接引用"。
利用指针我们可以做什么呢?
内存是线性,因为不同类型的变量占用不同大小的内存,所以我们必须要对内存进行编号。我们将内存的编号叫做内存的地址,当内存中装的是另一个变量的地址时,我们称之为指针。即:指针是装地址用的。
int a=10;
int *p=&a;
printf("%d",*p);
第二句:将变量a的地址写入指针变量p所开辟的空间内
第三句:打印出空间p的内容
我们将这种例如通过变量b来间接引用变量a,间接读写变量a的值的方式叫做"间接引用"。
注意:
第一个*号:声明变量p为一个指针类型变量
第二个*号:解引用运算符,解释p所存储的地址,解释的结果是在内存中找到p中的地址(如果变量名前没有加取地址运算符“&”则变量代表的就是变量所代表的存储空间里面的内容)所以,此时*p代表的是指针p里面的地址里面的内容。