You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言使用指针遍历数组:*(array+i)含义及循环影响咨询

数组与指针相关问题解答

1. *(array+i) 代表什么?

  • 数组名array在大多数表达式场景中(比如这里的array+i),会被自动转换为指向数组第一个元素的指针,等价于&array[0]。
  • array+i是指针算术运算:由于array是指向int类型的指针,i是整数,C语言会自动计算出指向数组第i个元素的指针(数组下标从0开始)。例如i=2时,array+2就指向array[2]的内存地址。
  • *(array+i)是对这个指针做解引用操作,最终得到该指针指向的数组元素的值,它和array[i]是完全等价的——C语言的下标访问array[i]本质就是*(array+i)的语法糖。

2. 它是在创建指针吗?

不是。array+i只是在表达式计算过程中生成一个临时的指针值,并没有在内存中创建新的指针变量。整个*(array+i)最终返回的是数组元素的int类型值,不会额外占用内存存储指针。

3. 对for循环有什么影响?

在你提供的代码里,*(array+i)和array[i]的作用完全相同,都是获取数组第i个元素的值。这个for循环的逻辑就是从i=0到i=9遍历数组所有元素并打印,换成array[i]作为printf的参数,输出结果完全一致。

这种写法只是用指针算术替代了下标访问,对循环的执行逻辑和效率没有本质影响——现代编译器通常会把两种写法优化成完全相同的机器码。

附你提供的代码:

int main() {
 int array[10] = {0, 1, 8, 2, 18, 3, 6, 2, 2, -4};
 int i;
 for (i = 0; i < 10; i++)
 printf( "array[%d] = %d\n", i, *(array+i) );
 return 0;
}

内容的提问来源于stack exchange,提问作者vivi2003

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:15:53