【发布时间】:2013-06-29 17:24:00
【问题描述】:
我正在学习 C 编程语言,我刚刚开始学习带指针的数组。我对这个问题有疑问,我希望输出必须是 5 但它是 2,谁能解释一下原因?
int main(){
int arr[] = {1, 2, 3, 4, 5};
char *ptr = (char *) arr;
printf("%d", *(ptr+4));
return 0;
}
【问题讨论】:
-
如果有人对这个问题投了反对票,那么请提及您的评论,这对我来说很难,希望对其他人不会...... :)
-
你有一个“int”数组,但有一个“char”指针。
-
+1 在您的公告中 :)
-
顺便说一句,你会期望你的输出是 5,而不是 4:
*ptr指向数组的第一个元素,即 1,在它之后的四个元素你有 5. 5如果你定义了int *ptr = (int *) arr; -
我建议将此问题的主题更改为更有用的内容。这个问题将来可能会被问到。我建议 我的 char 指针在从 int* 投射后指向有效值“或类似的东西。我会编辑这个问题,但赞成票太多,我不想搞砸这么受欢迎的问题。