关于strlen的问题,想不通为什么

如题所述

(1) 首先,声明变量 `size` 和 `letters`,它们的初始值分别为 `sizeof(name)` 和 `0`。需要注意的是,`sizeof(name)` 返回的是字符串数组 `name` 的总大小,包括最后的空字符 '\0'。而 `strlen(name)` 函数计算的是字符串的长度,即实际字符的数量,直到遇到空字符 '\0' 为止。因此,如果 `name` 数组未经初始化,`letters` 的值将是随机的,因为它取决于 `name` 数组中实际存储的字符数量。
(2) size = sizeof(name); //letters = strlen(name);size值会是40 ,而letters将是随机的,因为strlen函数计算字符串的长度时是以'\0'为结束的,也就是不管name数组有多长,计算长度时会从name开始一直向后统计长度,遇到‘\0’才表示字符串结束,这个长度就是strlen返回的长度。在(2)处如果name数组未经初始化,那么letters将是随机的乱者。
(3) 在C语言中,字符串是以空字符 '\0' 结尾的字符数组。`strlen` 函数用来计算字符串的长度,不包括空字符 '\0'。因此,如果 `name` 数组未经初始化,其长度将取决于数组中实际存储的字符数量,`strlen(name)` 返回的将是这些实际字符的数量。而 `sizeof(name)` 返回的是数组 `name` 的大小,包括最后的空字符 '\0'。所以,如果 `name` 数组未经初始化,`letters` 的值将是随机的,因为它取决于数组中实际存储的字符。
温馨提示:内容为网友见解,仅供参考
无其他回答

关于strlen的问题,想不通为什么
因此,如果 `name` 数组未经初始化,`letters` 的值将是随机的,因为它取决于 `name` 数组中实际存储的字符数量。(2)size = sizeof(name); \/\/letters = strlen(name);size值会是40 ,而letters将是随机的,因为strlen函数计算字符串的长度时是以'\\0'为结束的,也就是不管name数组有多长,...

关于strlen的问题,想不通为什么
char name[40];定以后没有初始化,刚申请到的40个空间里其实是有数据的,所以用strlen会得到错误的数据,而且不一定是45 你可以手动设置name[0]='\\0'或者全部赋值0;

c++中 strlen() 计算数组长度怎么会出错:很奇怪!!! 请看例子: 如 输 ...
这个问题出现的主要原因是你对strlen这个函数不理解,这个函数的工作原理是从key的key[0]开始到遇到第一个'\\0'字符位置为止,算作这个字符数组的长度,而你不加'\\0'则它会找到k[12]以后的'\\0',你可以做这样一个实验,在key的其他位置设置'\\0',比如key[6]位置,那么strlen(key)之后的值会是7...

请教大家一个strlen函数的问题
出这道题目的人水平太差了,多办是半路出家的,非常不专业,你的分析是有道理的。可能出题人只用过TURBO C,因为只有TURBO C这样的小程序才喜欢画蛇添足,自动添加结束符,所以长度会都是3。TURBO C自动添加结束符的做法是不规范的,C语言定义并没有这样规定编译器的行为,我们写程序切记千万别依赖这...

关于strlen()函数的问题
字符串的最后一个是\\0; strlen就是从指定位置开始,过了多少个读到0,就是几。s+1 在这里是将s的位置往后面挪一个,起始位置往后了,自然少读一个就到0了。

C++关于strlen的问题,大数加法一小部分
代码错误有:进位处理不问题——不能把进位加到低位上去,应该加到高位上去,c[i-1]+=1;才对吧!你处理完之后没有再变成“字符”,单元里全是整型数。没有在结尾处加'\\0'表示字符串(就是计算结果)结束。2、3导致了strlen(c)计算不准了,因为c[]里既不是字符又没有确定的结束符。

strlen的问题...
strlen是求字符串长度……另外你的aa数组未经初始化,这样求出来的strlen是错误的 sizeof(aa)输出就是10了

strlen()函数取字符串长度问题,匪夷所思~~~求高手指点
char b[]={'a'};只会为b分配一个char的空间,后面的内容是不可预知的,所以'\\0'可能会出现在后面的任何一个位置,而strlen()函数又是以'\\0'为标志来统计的。所以这样输出的数字无法预知。

关于strlen函数的问题!
因为用strlen这样测出的总是内存中s直到第一个'\\0'的字节数,将char s[30];改成 char s[30]={0};再看看结果如何

关于c语言中strlen的问题
C里面不能动态定义数组,数组的大小必须是编译时可知的,不能是在程序运行时才可知的;如果需要动态分配,则使用malloc

相似回答
大家正在搜