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

char* s 有关问题

2012-01-11 
char* s 问题char*s1s1newchar(100)intslensizeof(s1)请问slen为什么是4[解决办法]s1是指针,指针的

char* s 问题
char   *   s1;
s1   =   new   char(100);
int   slen   =   sizeof(s1);

请问slen为什么是4;

[解决办法]
s1是指针,指针的长度为4
[解决办法]
char * s1;
s1 = new char(100)

char s1[100];


有什么区别啊?

用new操作符申请的内存空间分配在堆上.
普通的静态数组,内存分配在堆栈上
[解决办法]
s1是个指针而已~~ sizeof(s1)就是4
[解决办法]
s1是一个字符的指针,指针的长度为4

[解决办法]
引用LZ的: "我动态分配后在s1中间会出现 "\0 ",我是想要知道我当前分配的空间的大小,不是字串的大小,有什么办法嘛 "

1、你动态分配的,怎么会不知道大小?
2、就算不知道,被封装了,那方法应该返回分配的结果,即分配了多大,这个是设计问题
3、指针是自由的,指向哪里,在哪里停止是你决定的(除了越界引发操作系统异常)
4、char s1[100]; 后,数组的内容是不定的,这时候用strlen取出的长度是不准确的,而且值不是固定的,这时候应该用 sizeof 来取大小
5、至于在堆上分配的内存,因为没有算法保证2次分配的空间是连续的,或者能明确区分每次分配的内存,因此。。。除了1、2条说的,无解

热点排行