超简单,送分了,在线等

来源:百度知道 编辑:UC知道 时间:2024/05/10 15:01:23
定义 int k[2][3],*pk[3];正确的是:
a.pk=k; b.pk[0]=&k[1][2]; c.pk=k[0] d.pk[1]=k;
选什么详细解释一下,解释清楚的给分

还有结构体的特点
补充: 答案是b

/*路过说说,望多琢磨,如有不对之处,欢迎来个百度消息共同探讨!*/

先分析:
int k[2][3]
k[i]是行地址,存放的是第i行数据的首地址,类型为int[](即其值是int型一维数组的首地址),或者说(匹配)是int*
k是(C语言规定)数组首元素地址,类型为int[][](即二维数组)
&k[i][j]是int型数据的地址 类型是*
k[i][j]是int型

再分析:
int *pk[3];相当于 int* pk[k];
可见,
pk[i]的值是一个地址(指针), pk[i]的类型是 int*
pk是数组pk[]的首元素的地址,类型为 int*[] 或者说(匹配)是int**
*pk[3]是int型


A: 左边int*[] 右边int[][] 类型不匹配,错误
B: 左边int* 右边int * 类型匹配, 正确!!!!!!!!
C: 左边int** 右边int* 类型不匹配,错误
D: 左边int* 右边int[][] 类型不匹配,错误

就应该是B

选B呀*pk[3]是一个指针数组.而&k[1][2]就是取k[1][2]的地址>

B D

k是多维数组的首地址,pk[3]是一个指针数组,里面存放的是指针,
pk是这个指针数组的首地址
A pk=k 将多维数组的首地址赋给指针数组的首地址,估计会引起内存错误 错
B pk[0]=&k[1][2] 将K[1][2]的地址赋给pk[0]; 对
C K[0]包含三个INT元素 不能赋给指针类型pk[0] 错
D 将数组K[2][3]的首地址赋给指针数组元素PK[1] 对

结构体相当于类 需要对象来使用
学过好久了,记不太清楚 呵呵

b d都正确,pk[3]是int*型的数组,pk就是这个数组的指针,
k[2][3]是int型数组,k是这个数组的指针。