哪位高手有办法?关于数组求长度的有关问题
谁有办法?关于数组求长度的问题!char *p new char[3]char a[3]int m,nm sizeof(p)n sizeof(a)
谁有办法?关于数组求长度的问题!
char *p = new char[3];
char a[3];
int m,n;
m = sizeof(p);
n = sizeof(a);
结果是m=4;n=3
那么如果我想知道p所指向的字符数组的大小该怎么办?
[解决办法]
这个没有办法
sizeof(p)得到的是指针自身的字节占用
[解决办法]
[解决办法]说说个人理解:
char *p
1、要么处理数据(不仅仅是字符串,可能是其他数据转成char *),那么都会给个结尾,要么长度,要结尾指针。
2、要么就是字符串处理,那么,这种情况都是字符串的,所以要求长度可以用strlen之类进行求值。
[解决办法]fpout到底是多少呢??
[解决办法][解决办法][解决办法][解决办法]谁有办法通知我,我是想不出来啦
[解决办法]形如char *p = new char[3];是没有办法通过p获得数组长度的,语言的特性使然,不过过多纠结。p是一个指针,在32-bit的系统上,它总是4bytes,char *p = new char[1000]这样的情形,它还是4bytes
[解决办法]你都写上了,还用算?就算你用的是个变量来动态声明,这个变量不就是它的大小么?
另外,你就当sizeof是个预处理函数,而不是运行时函数。
[解决办法]+1
[解决办法]不要凡事总想依赖别人(编译器、操作系统)
有时必须靠自己(声明一个变量记住某个数组的大小)
[解决办法]strlen(p)可以不?
[解决办法]C++11标准,貌似可以直接遍历数组?
[解决办法]楼主,如果我告诉您:C语言里其实根本就没有“数组”这个东西 —— 大家会不会骂我……?
(程序员大脑中的“数组”观念,在C的编译器那里,尽付阙如。)
呵呵……仅供参考……
[解决办法]利用指针应该不能求得数组的大小吧
[解决办法][解决办法][解决办法]对于获取动态分配的内存的大小:
如果你使用VC的编译器,那么有一个编译器内置函数_msize();可以得到分配的内存大小,不过GCC没有支持。但是,这个用处有多大呢?
C/C++ code*p = malloc(sizeof(int) * n);....n = _msize(p) / sizeof(int);
[解决办法]
[Quote=引用:]
这个没有办法
sizeof(p)得到的是指针自身的字节占用
看看《C与指针》