作者在 2009-05-11 19:46:00 发布以下内容
int *t=new int [8];
int n=sizeof(t)/sizeof(int);
cout<<n;
怎么n=1;而不是需要的8呢?
int *t=new int [8];
意思是分配8个int类型的数据的内存。
t指向的是分配的一段内存的首地址。
所有t的长度与int的长度是相等的。
意思是分配8个int类型的数据的内存。
t指向的是分配的一段内存的首地址。
所有t的长度与int的长度是相等的。
#include<iostream>
using namespace std;
int main()
{
int a[8];
int n=sizeof(a)/sizeof(*a);
cout<<n;
return 0;
}
这样就可以
using namespace std;
int main()
{
int a[8];
int n=sizeof(a)/sizeof(*a);
cout<<n;
return 0;
}
这样就可以
再看此贴,猛然发现红色部分的解释是错误的!
试看以下代码:
#include<iostream.h>
void main()
{
char *p=new char(4);
cout<<sizeof(p);
}
void main()
{
char *p=new char(4);
cout<<sizeof(p);
}
#include<iostream.h>
void main()
{
float *p=new float(4);
cout<<sizeof(p);
}
void main()
{
float *p=new float(4);
cout<<sizeof(p);
}
两段代码输出的都是4。why?因为指针里边存储的是地址。32位的地址!
故无论指针指向的是什么类型的变量,其大小都为4字节!