Seb*_*ian 2 c c++ arrays dev-c++
我知道我不应该使用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;
}
Run Code Online (Sandbox Code Playgroud)
sizeof()返回4而不是5 ...任何想法?
Dan*_*ite 26
它不是一个bug,因为它返回a自身的大小(int*在32位构建时为4字节类型),而不是数组的长度.
请注意 - 其他人说,大小取决于操作系统,这是一半的真实.这真的取决于构建.sizeof是一个编译时构造.
首先,你不应该认为"奇怪"行为的罪魁祸首是编译器:大多数时候这个bug都是你的.
事实上,你的sizeof指令告诉你一个int*和那个设计的大小是什么,所以这不是编译器的错,而是你的误解.没有办法用来sizeof告诉动态分配的数组的大小.