qhnw.net
当前位置:首页 >> ChAr str 10 ChinA >>

ChAr str 10 ChinA

因为char str[10];中,str是一个指针常量,指向系统为它分配的空间.而str={"China"};则企图更改str的指针值(为它重新赋值,指向另一个常量地址).所以它是错误的.

char str[10]={"china"};这是一条定义语句,它初始化了str 而后面的 str[]={"china"};这是一条什么语句,什么都不是,c语言中数组是不能整体赋值的;如果你觉得这样好点,那么用指针吧;char *str; str = "china";这样是允许的.可能又会想到,char str[10]; str = {"china"};这样行不,答案是不行的,str是什么?它是个地址常量,常量是不能做左值的

char str[10] = "china\0";这里面的字符数是6 = china(5个)+ \0 (1个);但是strlen(str)所求的是遇到 \0 这个字符之前的所有字符数,所有答案是5.当你字符串里面没有 \0 符号时,编译器会给你字符串末尾自动补上 \0 ,还有如何判断有多少个字符是根据ASCII表来 特别注意 \0 \r \n \t 这种 \ + 一个字符 或者三个字符(表示八进制,但是必须保证都是小于8的数字) 都是代表一个字符数 千万别拆开当作两个字符 切记

不等价!char str[ ]="china" 是等价于 char str[6]="china"; 因为 "china"有六个字符,分别是 'c' 'h' 'i' 'n' 'a' '\0' ,'\0' 是结束符,表示字符串结束

char str[10]=“china\n\0";给定了初始化表达式,且初始化列表中字符小于定义的char数组的元素个数10,所以之后的部分被隐式初始化为0,str的内存布局为:{'c','h','i','n','a','\n','\0',0,0,0}.事实上作为char而言字符串结束符'\0'和0是同一个字符

输出结果是7,因为你只有6个字符,虽然数组最大容量是12个.

如果该strlen是C标准库中的<string.h>的strlen,运行之会得到5. 为什么会得到5呢? strlen,即string length,功能是求字符串的长度. 在C语言中,字符串,指包含空字符'\0的字符序列. 在C中,字符串有两种表示法. 第一种,双引号括起.例如"china",在代码中不需要写空字符,其在内存中实际上是6个字节,空字符占最后一个字节. 二是显式的写上空字符. strlen的原理是,接收一个地址,读此地址之后的内容,如果内容不为空字符,计数加一直到读到空字符.

str[]中数组元素有五个,分别是字符'C','h','i','n','a'.但是数组长度是6,因为在'a'后还有一个'\0',最为字符串的结束标记. 虽然定义了str[10],但是str[6],str[7],str[8],str[9]什么也没有存储.

str1和str2都是字符型数组,而"china"是字符串型.你的错误有:类型错误,字符数组初始化错误,还有不能直接用一个数组去初始化另一个数组.正确如下:string str1,str2="china";str1=str2;

因为你定义的大小是10,就算你CHINA只有5个字符,但是你的数组元素是10个.str[10] [10]就说明数组元素大小为10,而不是5.所以是D

zxtw.net | yhkn.net | 3859.net | lyhk.net | pxlt.net | 网站首页 | 网站地图
All rights reserved Powered by www.qhnw.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com