sizeof不是函数,而是字节运算符,其返回值是变量声明后所占的内存数,不是实际长度。sizeof返回定义的数组时,编译器为其分配数组空间大小,不关心里面存了多少数据。
2. strlen函数
strlen是一个函数,其意义在于计算字符串的长度,不包括结束字符"\0",即:遇到第一个"\0"则结束,其返回值是字符串的字符数。strlen只关心存储的数据内容,不关心空间的大小和类型。
已知一个一维数组:a[ ]={1,2,3,4}
测试出以下几种形式分别代表什么意思?分别输出什么值?
1. 已知字符数组:char arr[] = { 'a', 'b', 'c', 'd', 'e', 'f' }
(1)给出一个字符数组,arr[ ]={'a', 'b', 'c', 'd', 'e', 'f'},测试出以下几种形式以sizeof方式输出各代表什么意思?分别输出什么值?
如果将arr[ ]数组改为arr1[ ]={'a', 'b', 'c', 'd', 'e', 'f', '\0'},又代表什么意思?会是什么结果?
(2)如果对数组arr[ ]={'a', 'b', 'c', 'd', 'e', 'f'}以strlen函数方式输出呢?又是什么结果?
如果将arr[ ]数组改为arr1[ ]={'a', 'b', 'c', 'd', 'e', 'f', '\0'},同样以strlen函数方式输出,又分别代表什么意思?会是什么结果?
注意:只要是地址,不管是整形数组,还是字符数组,在32位平台下,都是4个字节。
2.已知字符数组:char *p=“abcdef”
给出一个字符数组char *p=“abcdef” ,测试出以下几种形式以sizeof方式输出各代表什么意思?分别输出什么值?
如果对该字符数组以strlen函数方式输出呢?又是什么结果?
已知一个二维数组:a[3][4]={0}
测试出以下几种形式以sizeof方式输出各代表什么意思?分别输出什么值?