【发布时间】:2011-12-28 16:30:57
【问题描述】:
我知道我不应该使用 Dev-C++,但它在学校是强制性的,所以我对此无能为力。
主题是 C/C++ 中的指针,在测量整数数组的长度时出现错误。请看下面的代码:
// POINTER
# include<iostream>
# include<string.h>
using namespace std;
int main(){
//neues Feld anlegen
int *a = new int[5];
a[0] = 12;
a[1] = 5;
a[2] = 43;
a[3] = -12;
a[4] = 100;
// Feld füllen
for(int i = 0; i<sizeof(a);i++){
cout<<a[i]<<"\n"<<endl;
}
cout<<sizeof(a);
system("pause");
return 0;
}
sizeof() 返回 4 而不是 5...有什么想法吗?
【问题讨论】:
-
我的第一个想法是,除非你是上帝,否则你永远不应该认为意外行为是别人的错,尤其是“编译器错误”。唯一正确的问题是“在这段代码中我哪里看不懂 C 和 C++?”
-
“所以我对此无能为力。”我感觉到你的痛苦,但你至少可以将你的导师指向the information here。 :)
-
sizeof 中的错误对于编译器来说几乎是不可能的,这意味着如果 sizeof 被破坏,几乎所有东西都会被破坏!编译器中的错误很少见,Microsoft 和 GCC 有一些,但前提是你做了一些非常奇怪的事情,尤其是模板!
-
数组不是指针;指针不是数组。从第 6 节开始阅读comp.lang.c faq :)
-
澄清一件事:
sizeof(a)不会是 5,即使a的类型实际上是int[5]