最近写代码总是被基础知识卡住,十分耽误时间,今天又卡住了。所以下定决心一定要弄清楚这个问题,然后不好的是网上的资料总是解决的并不清楚,总是在纠结什么是指针数组什么是数组指针,看了《C缺陷和陷阱》也没有我想要的东西。要么就是C和C++混为一谈,new int[5]这种语法C肯定是错误的,所以找个机会总结一下,然后希望以后不要再栽在基础上。
定义
指针数组:int p[10] 数组指针 int(*p)[5]。[]的优先级高所以 int *p[10]表示数组中都是int,而p指向数组首地址。没图说个p
反之int(*p)[5]表示 *p指向一个大小为5的数组,p则是二维数组的首地址。
使用
指针数组-本质是一个数组
int *p[10];
printf("%d\n",sizeof(p) );//是40
for (i = 0; i < 10; ++i)
{
p[i] = malloc(sizeof(int)*i);
}
for (i =