sizeof与strlen的关联性
Strlen和sizeof在某种程度上存在关联性。
strlen是一个C标准库函数,用于计算字符串的长度。它接受一个以null字符结尾的字符串作为参数,并返回该字符串的字符数量(不包括null字符)。
sizeof是一个C语言的运算符,用于计算一个变量或数据类型所占用的内存空间大小。它返回的是一个对象或类型所占用的字节数。
在一些情况下,strlen和sizeof可以返回相同的值,特别是在处理以null字符结尾的字符串时。例如:
char str[] = "Hello";
size_t str_length = strlen(str);
size_t array_size = sizeof(str);
在上面的例子中,str_length
和array_size
将会返回相同的值,因为str
是一个以null字符结尾的字符串,且在声明时已经分配了足够的内存空间。
然而,需要注意的是,sizeof返回的是一个类型所占用的总字节数,而不是字符串的实际长度。因此,对于指针变量或动态分配的字符串,在使用sizeof时可能会返回不同的结果。
char* str_ptr = "Hello";
size_t ptr_size = sizeof(str_ptr); // 返回指针的字节数
在上面的例子中,ptr_size
将会返回指针类型的字节数,而不是字符串的实际长度。
综上所述,虽然strlen和sizeof在处理以null字符结尾的字符串时可能返回相同的值,但在其他情况下,它们并没有直接的关联性。
下面我会以一些笔试题来展示他们的区别
关于sizeof有关的一些笔试题
sizeof的两个例外
1.sizeof(数组名) 则是整个数组
2.&数组名 是整个数组的地址
除了这两个情况,其他情况都表示首元素的地址,地址的大小是4/8个字节
一维数组:
字符数组:
二维数组:
关于指针运算的一些笔试题
最后一题有点难度哦 如果有想知道详细过程的私信我