全部博文(1293)
分类:
2012-10-31 19:20:33
引语:用字符串常量给字符数组赋值过程分析,涉及到数据在内存的分配情况,做一个分析!
一、测试案例,假设在某一个函数内部
测试代码段:
运行效果:
二、案例分析
图 字符串给字符数组赋值过程
1、字符串给字符数组的长度问题:
从案例代码可以看出,字符数组的长度是字符串+’\0’结束符;
而使用strlen(str),取得的是净字符串的长度,不包括’\0’。
2、字符串常量给字符数组赋值:
从上图,给数组a[]赋值时,是从文字常量区拷贝一个”abcd12”的副本给a[],然后系统自动加上’\0’结束符。
附:strlen的功能实质
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。