【发布时间】:2019-12-18 19:21:41
【问题描述】:
我创建了数组:
int main()
{
int num[3] = {1, 2, 3}
return 0;
}
我想将元素放置到位 1。
为什么我不能通过这段代码获取元素?
printf("%d", *(num + (sizeof(int)*1)));
这有什么不同?
printf("%d", *(num + 1));
【问题讨论】:
-
谷歌“指针算法”。
-
有什么不同?
sizeof(int)不等于1。 -
整数可以是 2,4,字节。
-
指针运算以所指向的类型为单位工作,因此
*(num + 1)是num[1],而*(num + sizeof int)超过了sizeof(int) - 1元素。