请教一道c语言编程题,p不是指向一维数组吗,怎么可以使用p[i][i]?
发布网友
发布时间:2022-04-23 13:05
我来回答
共5个回答
热心网友
时间:2022-04-26 21:04
int *p[3] 这种定义方法,表示p是一个一维数组,有三个元素,每个元素类型是一个 int * 也就是指向int类型的指针。
那么p[i] 是这个一位数组中的一个元素,它就是一个int* 。
如果这个指针是指向一个数组的首地址的,那么对于这个指针就可以使用[]下标操作来取元素,因为下标操作符的本质是地址+偏移量然后取值的操作。
也就是如果int a[10]; int *p = a; 那么 a[i] 跟*(p + i) 是一回事
热心网友
时间:2022-04-26 22:22
结果 选D
第一个循环:
p[0]=&w[0*0]=&w[0] p数组0行首地址
p[1]=&w[1*1]=&w[1] p数组1行首地址
p[2]=&w[2*2]=&w[4] p数组2行首地址
第二个循环是这3个数相乘:
p[0][0]=1; p数组0行0列的值
p[1][1]=3; p数组1行1列的值
p[2][2]=7; p数组2行2列的值
理解本题用到一个概念:数组名代表数组的首地址
热心网友
时间:2022-04-26 23:57
p是一维指针数组,即p[i]都是指针,对于指针如果取元素可以用下标的方式,所以有p[i][i].
由第一个循环知道p[0]=&w[0], p[1]=&w[1], p[2]=&w[4];
s = 1 * 1 * 3 * 7 = 21
答案:D
热心网友
时间:2022-04-27 01:48
因为他是*p[3].相当于p[3][n]是动态的,可以就好像*p一样,是一个一维数组
热心网友
时间:2022-04-27 03:56
*p是指针啦追问可是没有二维数组呀