char str[10],那么sizeof(str)等于多少
时间: 2023-12-18 09:02:45 浏览: 149
如果定义了一个字符数组`char str[10]`,那么`sizeof(str)`的值为10,这是因为`sizeof`运算符返回的是数组所占用的总字节数,而不是数组中存储的字符数。
需要注意的是,如果是一个指向字符的指针变量,如`char* str`,则`sizeof(str)`的值为指针变量所占用的字节数(通常为4或8,取决于计算机的位数),因为指针变量存储的是字符数组的地址,而不是字符数组本身。如果需要获取字符数组的长度,可以使用C++标准库中的`strlen`函数,例如:
```c++
char str[10] = "Hello";
std::cout << "size of str: " << sizeof(str) << std::endl; // 输出size of str: 10
int len = strlen(str);
std::cout << "length of str: " << len << std::endl; // 输出length of str: 5
```
在上面的例子中,`sizeof(str)`返回的是10,而`strlen(str)`返回的是字符串长度5。
相关问题
char str[100] sizeof(str)
char str[100] 表示定义了一个字符数组,数组名为 str,数组长度为 100。
sizeof(str) 表示获取数组 str 的大小,即占用的字节数。在这里,由于 str 是一个字符数组,所以 sizeof(str) 的值为 100。
6、有如下定义CHAR str1[100] = "12345"; CHAR str2[100] = "12345"; 那么sizeof(str1)、strlen(strcat(str1,str2))和sizeof(strcat(str1,str2))分别等于【 】、【 】和【 】
根据题目中的定义:
```c
char str1[100] = "12345";
char str2[100] = "12345";
```
可以知道,`str1` 和 `str2` 分别是长度为 6 的字符串,其中包括 5 个字符和一个结尾的空字符(`'\0'`)。因此,`sizeof(str1)` 的值为 100,即字符数组 `str1` 的长度为 100 个字节。
调用 `strcat(str1, str2)` 函数将字符串 `str2` 拼接到字符串 `str1` 的末尾。由于 `str1` 的长度为 6,再加上 `str2` 的长度也是 6,因此 `strcat` 函数执行后,`str1` 的长度变为 12(包括两个结尾的空字符)。又因为 `strcat` 函数返回的是指向目标字符串的指针,因此调用 `strlen` 函数计算拼接后的字符串长度,即 `strlen(strcat(str1, str2))` 的值为 12。
最后,`sizeof(strcat(str1, str2))` 的值为 100,即字符数组 `strcat(str1, str2)` 的长度为 100 个字节。这是因为在调用 `strcat` 函数后,`str1` 变为了长度为 12 的字符串,但是字符数组 `strcat(str1, str2)` 的大小仍然是 100,这是在定义时分配的内存大小。同时,由于 `strcat` 函数返回的是指向目标字符串的指针,所以 `sizeof(strcat(str1, str2))` 仍然是字符数组的大小。
阅读全文