欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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的菜鸡,不怎么用到C,纯粹是想多了解点编程的知识,有错勿喷,共同学习