int a[5][5]={0}; int *p[5]; 为什么不能p=a呢
③回到①,因为p[i]为列指针,因此赋值时 同一般的列指针相同,如int *fp;访问a[5][5]时,必须给fp赋值成fp=a[0],这样fp=&a[0][0],同理p[0]=a[0],这样p[0]=&a[0][0]访问数组时直接可以是 *(p[i]+j)或*p[i][j]...
如果int[4][5];int(*p)[5];p=a;这里为什么不用p=*a
int a[5]={1,3,5,7,9},*p;p=a[2];\/\/ ++p是先将p执行++,再用p进行运算;而p++是先将p进行运算,再执行++ \/\/ 这里的++体现为指针指向地址的运算,即以一个int单元为单位1进行++操作 printf("%d ",*(++p));\/\/ p-a的运算也是以一个(int)单元作为单位1进行计算 printf("%d\\n"...
int *p int a[4][5] p=a和p=&a[0][0]的区别
但是若p=a;p++就是&a[1]p=&a[][];p++就是&a[0][1];p=a;p++和&a[1]等价
int a[5] int (*p)[5]; 下面语法正确的选项是() A p=a B p=&a C p...
p定义为一个指针,这个指针指向一个数组,这个数组有5个int类型的元素 a定义为一个有5个int类型元素的数组,取a的地址赋值给P是合理的
C语言指针问题:在定义指针时*p=a和p=a有区别吗?
当然有区别,区别很大,*p=a,就是给指针的表示的地址赋值,也就是赋值给指针指向的存储单元;而p=a,则表示给指针赋值,也就是指针的地址变成了a。两者一个指明了具体值大小,一个指明了具体位置。
...5X5 矩阵 a 中任意两行进行交换,交换时不能使用数组.
\\n");}int main(){ int a[5][5]={0}; int (*p)[5]; p=a; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { *(*(p+i)+j)=rand()%32; } } printf("Initial Array:\\n"); for(...
int *p[5]和int (*p)[5]的差别
int *p[5]; 是指针数组, 有 5 个成员,每个成员都是一个指针,共有5 个指针 int (*p)[5]; 小括号优先,所以 是 1个指针,用来指向 有5个元素的数组。--- 一般来说 int (*p)[n]; 是数组指针(也称行指针)()优先级高,说明p是一个指针,指向一个整型的一维数组,这个一维数组...
C语言中int *p[5]与 int (*p)[5]的区别
二、含义不同:第二个就是这个指针所指的值是一个大小为5个int的数组的首地址。p+1(数组地址+1)代表内存地址下移了5个单位。三、使用不同:int (*p)[5];int a[10][5];p=&a[1]; \/\/ 现在(*p)就等于a[1] 所以 a[1][2]可以表示为(*p)[2]...
char a[5][5]={{""},{""},{""},{""},{""}}; \/\/方正 char le[3]=...
a数组可以看成是个指向指针的指针,也就是**a.*p_a只是个普通指针.类型不匹配!
关于数组首地址赋值给指针和数组指针的问题
int *p定义了一个指向int型的指针p。而a本身已经是指向int型的指针了,对a做取值操作,返回的结果是int **类型的,造成类型不匹配,所以不能这样写:int *p = &a;而int (*pa)[5]定义了一个指向5个元素的int数组的指针,而a只是数组的首地址,&a才是数组的指针,同样也是因为类型不匹配。