为何未添加[i]时数组无法显示?求解[i]的作用
代码中
[i]的作用及无法显示数组的原因 1. [i]的核心作用
在C语言里,数组名作为函数参数传递时,会自动转成指向数组首元素的指针。[i]是下标运算符,它的功能是:从指针指向的起始位置,向后偏移i个int类型的内存块,取出对应位置的元素值。简单说就是精准访问数组的第i+1个元素(因为数组下标从0开始计数)。
比如你的代码里:
tableau[0]对应数组第一个元素12tableau[1]对应第二个元素15- 以此类推,循环里的
i从0到3,就能依次取出数组前4个元素。
2. 不加[i]为啥没法显示数组
如果去掉[i],直接写tableau,那你传给printf的是数组首元素的内存地址,而不是数组里的数值。
- 用
%d格式符打印地址,输出的是地址的十进制数值(一个毫无意义的大整数),不是你要的数组元素。 - 而且循环里每次打印的都是同一个地址,根本不会遍历数组的后续元素,自然看不到正确的数组内容。
额外补充:等价写法
tableau[i]和*(tableau + i)是完全等价的,后者是用指针加法的方式访问元素,本质和下标运算符一模一样,只是写法不同。
内容的提问来源于stack exchange,提问作者Sinay
相关产品推荐
相关产品推荐

