这个问题应该是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 = a ;//不能将 int(*)[3]类型的值 赋值给 int* 类型的实体
p1 = b;
p2 = a;
// p22 = a ;//不能将 int(*)[4]类型的值 赋值给 int(*)[3] 类型的实体
// p3 = a;//类型不匹配
p2 = &a[1]; //可以,多维数组的每行的首地址 都是一个数组指针
p2 = &a[0];//与 p2 = a 等价
return 0;
}