arrays - 为什么 p[0]++ 与 C 中的 *(p)++ 不同
问题描述
当我尝试在 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)
解决方案
表达方式:
p[0]++;
基本上增加索引 0 处的值。
尽管
*(p)++
增加指向下一个地址的指针。
例子 :
int arr = {10,20};
int *p = arr; // p points to the first element of array, i.e 10
*(p)++; // now p points to the next element i.e 20.
推荐阅读
- ios - 如何使用 iOS-Charts 创建具有多个 labelTextColor YAxis 的 LineChartView
- android - 如何使用 Kotlin 在 Android 上的 Apollo GraphQL 中创建 JSON CustomTypeAdapter
- azure - Azure Blob 存储 SDK:关闭日志记录
- python - 如何从路线中找到一个位置的最短距离(Python),
- perl - perl 使用评估修饰符在字符串中增加数字
- continuous-integration - 来自 Go CI/CD 的 Gitlab 连接
- opencv - Unity3D中如何检测人体
- cpu-architecture - 变量分配和 RAM
- javascript - 使用 JavaScript 且不使用 PostBack() 的用户控件 (ascx) 中的 SET 父页面 (aspx) 标签文本
- javascript - 在 div 转换时修复孩子的位置