C语言指针的理解
程序员文章站
2024-03-07 15:58:27
...
#include<stdio.h>
int main()
{
int arr[2][3]={1,2,3,4,5,6};
int (*p1)[2],(*p2)[2],*p3,*p4,*p5;
声明2个数组指针,和3个普通指针
p1=arr;记住p1是数组指针,是指向数组的
printf("%d\n",(*p1)[0]);输出数组里的第一个元素
p1++;指针自增,自增按数组单位自增,这里看成一维数组的话,一个数组单位就是3,相当于指针下一行了
printf("%d\n",(*p1)[3]);数组第二行的第三个元素
p2=&arr[0][0];p2也是数组指针
printf("%d\n",(*p2)[0]);数组指针指向数组,输出数组第一个元素
p2++;数组指针按数组单位数自增
printf("%d\n",(*p2)[3]);同样也是第二行第三个元素
p5=&arr[0][0];这里要注意,p5是普通指针,这里是第一个元素的地址
printf("%d\n",*p5);输出第一个元素
p5++;单个变量自增,按照指针所指向的变量类型ASII码自增,如果这里仍按照上面的*(p2)[0]是错的,那是二维的
printf("%d\n",*p5);输出数组第二个元素
p3=arr;p3也是普通单元素指针
printf("%d\n",p3);输出第一个元素的地址。。。这里故意的少了*号
p3+=4;位置+4,其实对应的ASII码应该加了16
printf("%d\n",*(p3+1));再加1,这里括号加不加无所谓,因为*号的优先级低
p4=&arr[0];p4也是普通指针变量
printf("%d\n",*p4);输出数组第一个元素
p4++;自增
printf("%d\n",*p4);输出数组的下一个元素
return 0;
}
输出结果如下:
本人也是C的菜鸡,不怎么用到C,纯粹是想多了解点编程的知识,有错勿喷,共同学习