1、定义一个指针变量
#define _CRT_SECURE_NO_WARNINGS #includeint main() { int a = 10;//a在内存中要分配的空间--4字节 printf("%pn", &a);//%p专门用于打印地址的 int* pa = &a;//pa是用于存放地址的,在C语言中pa叫指针变量 //*说明pa是指针变量 //int说明pa修饰的是int类型的对象 char b = 'w'; char* pa1 = &b; }
a在内存中要分配的空间--4字节
%p专门用于打印地址的
int* pa = &a;//pa是用于存放地址的,在C语言中pa叫指针变量
*说明pa是指针变量
int说明pa修饰的是int类型的对象
2、指针大小
如何确定一个指针的大小的呢?
#define _CRT_SECURE_NO_WARNINGS #includeint main() { printf("%dn", sizeof(char*)); printf("%dn", sizeof(int*)); printf("%dn", sizeof(float*)); printf("%dn", sizeof(double*)); printf("%dn", sizeof(short*)); printf("%dn", sizeof(long*)); printf("%dn", sizeof(long long*)); //大小均为8字节 }
输出结果如下
可见,指针大小均为8字节,指针大小是相同的,这是因为指针是用来存放地址的,指针需要多大空间取决于地址存储需要多大空间;比如32位机器指针大小就是4字节,64位机器指针大小就是8字节。
3、用解引用操作符*来改变局部变量的值
有如下代码段
#define _CRT_SECURE_NO_WARNINGS #includeint main() { int a = 25; int* pa = &a; *pa = 56;//* 就是解引用操作符,*pa就是通过pa找到a的地址后改变a的值 printf("%dn", a); }
输出如下
可见,其中a的值被改变了,这是因为* 是解引用操作符,*pa就是通过pa找到a的地址后改变a的值。



