1. strlen的原理就是从第一个位置开始计数直到遇到'\0'。
2. malloc分配内存时并不将所分配的内存清零。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main()
{
char *s="1234567890";
s=0;
printf("s的长度=%d\n",strlen(s));
s=1;
char *str=(char *)malloc(strlen(s));
for(int i=0;i<9;i++)
{
str=1;
}
str=0;
printf("str的长度=%d\n",strlen(str));
}
本帖最后由 风扫地 于 2011-11-27 18:10 编辑
542971618 发表于 2011-11-27 16:46 static/image/common/back.gif
我不是很明白,能具体解释下么? 而且你的程序FC了
FC是什么意思?如果编译不过。
保存为.cpp文件来编译上面的程序 我的代码和你帖子那段绿字不是一个意思?。。。;P
【已解决】malloc函数是动态分配内存的,也就是用malloc分配的内存中的内容是不确定,可能在strlen(s)长度范围内存在'\0',也可能在strlen(s)之外存在'\0',而恰巧strlen()函数查的就是'\0'之前字符的个数,而且每个人的电脑这个'\0'的位置都不一样,所以最后的结果也不确定。
不错不错,解释的很好!!!!!!!1 其实C 语言里有个很牛的函数 mmap(),不过它太低级了。不过用处很大:sleepy:
页:
[1]