首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-09-20 
谁有办法?关于数组求长度的问题!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)得到的是指针自身的字节占用
[解决办法]

探讨

这个没有办法
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没有支持。但是,这个用处有多大呢?



C/C++ code
*p = malloc(sizeof(int) * n);....n = _msize(p) / sizeof(int);
[解决办法]
[Quote=引用:]
这个没有办法
sizeof(p)得到的是指针自身的字节占用
看看《C与指针》

热点排行