哪位高手有办法?关于数组求长度的有关问题

谁有办法?关于数组求长度的问题!
char *p = new char[3];
char a[3];
int m,n;
m = sizeof(p);
n = sizeof(a);

结果是m=4;n=3

那么如果我想知道p所指向的字符数组的大小该怎么办?

------解决方案--------------------
这个没有办法
sizeof(p)得到的是指针自身的字节占用
------解决方案--------------------
探讨

这个没有办法
sizeof(p)得到的是指针自身的字节占用

------解决方案--------------------
说说个人理解:
char *p 
1、要么处理数据(不仅仅是字符串,可能是其他数据转成char *),那么都会给个结尾,要么长度,要结尾指针。
2、要么就是字符串处理,那么,这种情况都是字符串的,所以要求长度可以用strlen之类进行求值。
------解决方案--------------------
fpout到底是多少呢??
------解决方案--------------------
探讨
char *p = new char[3];
char a[3];
int m,n;
m = sizeof(p);
n = sizeof(a);

结果是m=4;n=3

那么如果我想知道p所指向的字符数组的大小该怎么办?

------解决方案--------------------
探讨
char *p = new char[3];
char a[3];
int m,n;
m = sizeof(p);
n = sizeof(a);

结果是m=4;n=3

那么如果我想知道p所指向的字符数组的大小该怎么办?

------解决方案--------------------
探讨
引用:
char *p = new char[3];
char a[3];
int m,n;
m = sizeof(p);
n = sizeof(a);

结果是m=4;n=3

那么如果我想知道p所指向的字符数组的大小该怎么办?
指针方式定义的数组无法求长度
[]定义的可以.不过对于[]类型的数组sizeof出来的不是数组数据长度,你能的出来3是运气好定义的恰好……

------解决方案--------------------
谁有办法通知我,我是想不出来啦
------解决方案--------------------
形如char *p = new char[3];是没有办法通过p获得数组长度的,语言的特性使然,不过过多纠结。p是一个指针,在32-bit的系统上,它总是4bytes,char *p = new char[1000]这样的情形,它还是4bytes
------解决方案--------------------
你都写上了,还用算?就算你用的是个变量来动态声明,这个变量不就是它的大小么?
另外,你就当sizeof是个预处理函数,而不是运行时函数。
------解决方案--------------------
+1 
探讨
形如char *p = new char[3];是没有办法通过p获得数组长度的,语言的特性使然,不过过多纠结。p是一个指针,在32-bit的系统上,它总是4bytes,char *p = new char[1000]这样的情形,它还是4bytes

------解决方案--------------------
不要凡事总想依赖别人(编译器、操作系统)
有时必须靠自己(声明一个变量记住某个数组的大小)
------解决方案--------------------
strlen(p)可以不?
------解决方案--------------------
C++11标准,貌似可以直接遍历数组?
------解决方案--------------------
楼主,如果我告诉您:C语言里其实根本就没有“数组”这个东西 —— 大家会不会骂我……?

(程序员大脑中的“数组”观念,在C的编译器那里,尽付阙如。)

呵呵……仅供参考……


------解决方案--------------------
利用指针应该不能求得数组的大小吧
------解决方案--------------------
探讨
楼主,如果我告诉您:C语言里其实根本就没有“数组”这个东西 —— 大家会不会骂我……?

(程序员大脑中的“数组”观念,在C的编译器那里,尽付阙如。)

呵呵……仅供参考……

------解决方案--------------------
探讨

strlen(p)可以不?

------解决方案--------------------
对于获取动态分配的内存的大小:

如果你使用VC的编译器,那么有一个编译器内置函数_msize();可以得到分配的内存大小,不过GCC没有支持。但是,这个用处有多大呢?