#include <stdio.h>
void main()
{
int (*p)[4]={45,66,98,64};
for(int i=0;i<4;i++)
{
printf("%d ",(*p)[i]);
}
}
帮我看这个程序为什么不对?
解释下?
#include <stdio.h>
void main()
{
int (*p)[4]={45,66,98,64};
for(int i=0;i<4;i++)
{
printf("%d ",(*p)[i]);
}
}
帮我看这个程序为什么不对?
解释下?
#include <stdio.h>
void main()
{
int (*p)[4]={45,66,98,64};
for(int i=0;i<4;i++)
{
printf("%d ",(*p)[i]);
}
}
(*p)[4]是建一个一级指针数组,其长度为4,
故对其初始化只能用相应的一级数据地址。
而对于
p=&a 数组名字不是首地址吗?
为什么还要加取地址符?
它不符合规范,数组的建立先是其头地址,后面接着a[0]~~~~~
故数组名我们实际上指的是头地址(指明了指针属性)
因此p=a就可以了
而p=&a有些软件可以运行,但不符合规范。
你这是一个指针, 怎么能赋4个值呢?
(*p)[4]意思是一个指针p指向一个维度为4的一维数组, 是一个指针哦, 不是四个指针
(*p)[4]改为p[4]
应该改成这样
#include <stdio.h> int main() { int i; int a[4] = {45,66,98,64}; int *p[4]; for( i= 0; i <4; i++){ p[i]=&(a[i]); printf("%d ", *p[i]);} getchar(); }
int (*p)[4] 这个定义为指向数组的指针...额,怎么说呢.就是说p这个指针指向一个数组,而这个数组有4个元素
int a[4]={45,66,98,64};
int (*p)[4];
p=a; 这样的话应该没问题了...