C语言自定义数组代码中(a->ptr)[i]的[i]作用咨询
代码中
(a->ptr)[i]里[i]的作用解释 首先明确a->ptr的本质:你的自定义结构体myArray里,ptr是一个int*类型指针,它指向的是createArray函数中用malloc分配的连续内存块——这块内存就是用来存储自定义数组元素的动态数组首地址。
而[i]是C语言的数组下标访问运算符,(a->ptr)[i]完全等价于*(a->ptr + i),它的作用是:
- 从
ptr指向的内存首地址出发,向后偏移i个int类型的字节长度(因为ptr是int*,偏移步长是sizeof(int)); - 取出该偏移位置上的
int类型元素值(如果是赋值操作,就是把值存入该位置)。
结合你的代码场景来看:
- 在
setVal函数的循环里,(a->ptr)[i] = n是把用户输入的数值n,存入动态数组的第i个位置; - 在
show函数的循环里,printf("%d\n",(a->ptr)[i])则是取出动态数组第i个位置的元素,打印输出。
循环中i从0到a->used_size-1,刚好遍历完所有有效存储的数组元素。
内容的提问来源于stack exchange,提问作者Shresth Gour
相关产品推荐
相关产品推荐

