这个问题应该是C语言里的常见基础问题了,今天又理解了一遍,写个笔记复习。
1.数组指针
原来我理解的数组指针就是指向数据的指针嘛,就是这样的
- </pre><pre name="code" class="cpp">int a[] = {1,2,3};
- int *p;
- p = a;
原来应该是这样的
- int a[2][3] = {{1,2,3},{4,5,6}};
- int (*p)[3];
- p = a;
2.指针数组
这个好理解一些,重点还是数组,数组的元素都是指针。
- int a[] = {1,2,3};
- int *p[3];
- p[0] = &a[0];
写了一段代码测试了一下各种情况
- int main()
- {
- int a[2][3]={{1,2,3},{11,22,33}};
- int b[3] = {111,222,333};
- int *p1;
- int (*p2)[3];
- int (*p22)[4];
- int *p3[2];
- char *s[]={"hello","the","world hi"};
- char **chp;
- char *c = (char *)malloc(10);
- p1 = b;
- p2 = a;
- p2 = &a[1];
- p2 = &a[0];
- return 0;
- }