如何求得指针所指数组的大小

作者在 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的长度是相等的。
 
 
#include<iostream>
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);
}
 
#include<iostream.h>
void main()
{
float *p=new float(4);
 cout<<sizeof(p);
}
 
两段代码输出的都是4。why?因为指针里边存储的是地址。32位的地址!
故无论指针指向的是什么类型的变量,其大小都为4字节!
 
 
论坛问题 | 阅读 4129 次
文章评论,共1条
renny
2009-05-11 21:37
1
嗯,LZ正解<br />
对一个指针进行sizeof操作得到的结果就是指针的位置,对于现在32位的机子都是4,对于以前的16位机子则是2
游客请输入验证码
浏览6476次
文章归档