一、什么是指针?
指针就是地址,地址就是指针。
指针就是内存地址,指针变量用来存放内存地址的变量。
不同类型的指针变量所占用的存储单元长度是相同的,
而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。
有了指针后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。
二、如何获取变量地址
利用&取出变量地址
int main()
{
int a = 10; // a在内存中要分配空间 - 4个字节
&a; // 取出num的地址
printf("%p\n", &a); //%p - 以地址的形式打印
return 0;
}
三、定义指针变量、存储地址
* 定义一个指针变量
& 是取地址运算符,获取变量的地址信息
int main()
{
int a = 10;
int* pa = &a; // pa是用来存放地址的,在C语言中叫pa的是指针变量
char ch = 'w';
char* pc = &ch;
return 0;
}
四、获取变量的值
* 解引用运算符
如果把定义指针理解为包装快递,那么解引用操作就是拆包裹。
拆出来的值就是变量的值
通过解引用还可以修改变量的值
int main()
{
int a = 10;
int* pa = &a;
*pa = 20; // * 解引用操作 *pa就是通过pa里边的地址,找到a
printf("%d\n", a); //20
return 0;
}
五、指针大小是否相同
指针的大小是相同的。
因为指针是用来存放地址的,指针需要多大的空间,取决于地址的存储需要多大的空间。
指针是一种复合数据类型,指针变量内容是一个地址,因此一个指针可以表示该系统的整个地址集合,故按照32位编译代码,指针占4个字节,按照64位编译代码,指针占8个字节。(不是64位系统一定占8个字节,关键是要按照64位方式编译)。
32位---32bit----4byte
64位---64bit----8byte