当我尝试在C中执行这些代码时
#include <stdio.h>
int main(void)
{
int arr[] = {10, 20};
int *p = arr;
p[0]++; // *(p)++;
printf("arr[0] = %d, arr[1] = %d",arr[0], arr[1]);
return 0;
}
输出:arr [0] = 11,arr [1] = 20
将p[0]++;
替换为*(p)++;
输出:arr [0] = 10,arr [1] = 20
请解释为什么。我知道a [i]相当于*(a + i)
答案 0 :(得分:1)
表达式:
.set<x>
基本上使索引0处的值递增。
而
p[0]++;
增加指向下一个地址的指针。
示例:
*(p)++
答案 1 :(得分:0)
可以使用以下代码:
p[0]++ means = p[0] + 1;
p[0]++ = 10 + 1;
p[0]++ = 11;
您无法对数组执行同一操作,所以要小心。
希望对您有帮助!