#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
//int i = 5;
//int* p = &i;//p就是一个指针变量,p可以用来存储地址,类型是整型指针,这里的*不是解引用
//printf("%d\n", i);//直接访问
//printf("*p=%d\n", *p);//间接访问也就是解引用,这里的*代表解引用。*p:通过p存储的地址找到它所对应的内容,即5
//指针的偏移
int a[5] = { 1,2,3,4,5 };
int* p;//对一个指针变量进行取值,得到的类型是基类型int,int为4个字节
p = a;//数组名为数组的首地址也是数组第一个元素的地址,这时候p当中保存的是数组的首地址
printf("*p=%d\n", *p);//*解引用。*p为p中保存地址中的那个值,即数组的首元素1
// 任何指针加1,加的是它基类型的大小。这里指针p的基类型为int,所以加的是4个字节
//p+1可以指向下一个元素
for (int i=0;i<5;i++)
{
printf("%d ", *(p + i));//这里加括号的原因是 +的优先级比*低
}
return 0;
}
上述代码实现的是利用指针来输出一个数组的值。
运行结果如下: