意思是定义了名为str0,str1,str2和str3的四个数组,并且数组中的元素数据类型为char型(即字符型)。[]里为数组长度,即这个数组中有多少个元素,str0是301个,str1是100个...以此类推。
char str[10] = {0}, 这里10个元素会被赋值为 null 字符(空字符),这个就是指'\0'。直接打印str[0]的值会发现,显示的就是空字符,啥也没有,但强制转换后你会发现它的ASCII码值为0 (static_cast<int>(str[0])),它占一个字节,其中8位全为0。 例如下面的程序 char a = '\0'; //赋值为休止符,...
char str[100]的意思是,定义一个字符数组str,大小为100;str[100],数组下标是0-99,共可以存储100个字符。例如:
charstr[]="C++";str[0]='c';//正确char*p="C++";p[0]='c'//不正确 原因在于两种方式对字符串数组的操作机制不同。使用char *p = "C++"后,编译器在内存的文字常量区分配一块内存,保存"C++"这一字符串的值,然后再栈上分配内存保存p,p的内容为"C++"的地址。p[0] = 'c'试图修改常量"C++",导致...
一个char变量表示一个英文字符。但是对于中文等远东字符集来说,就比较坑爹了。char str[]; str[0]并不能完整表示一个汉字。UTF-8编码格式下,一个汉字需要至少3个char才能表示。这对于通过下标来操作字符串的操作来说是非常痛苦的一件事情。 另外,一个汉字需要至少3个char来表示,也让汉字在网络传输上存在劣势,...
第二个是空字符,第一个是赋值为0
如昨天随笔中所说,char *str = “abcxcba”;只是声明了一个指针变量,该指针变量指向字符串“abcxcba”,但是“abcxcba”这个字符串,编译器没有去给他分配空间,于是就把他放进了常量区,而常量字符串是不允许被修改的,于是就出现了上述的错误。 于是我将字符串的定义改成了这样,char str[] = "abcxcba";...
意思就是一个包含十个字符的字符串*/ str={0};/*看来你还没有学到指针那一章吧,str是一个常量指针,不能被修改,而且你用给数组赋值的方式给一个指针赋值,更加错上加错*/ 注:数组的名字其实就是指向数组第一个元素的指针。str[10]是数组 str是指向str[0]的指针 ...
charstr[] ="Hello world";char*lpstr = str; lpstr是一个指向字符数组(字符串)变量的指针变量。lpstr的值可读可写,也就是在不同时间它可以指向不同的的内存单元;同时,它所指向的内存单元str也可读可写。 5: const char*: 例子: constcharstr[] ="Hello world!";constchar*lpstr =str;//这样写也一样...
char*str="hello"; 解析: str是一个char型指针变量,它指向常量”hello”字符串所在的首地址 ①:变量str保存在栈上 ②:常量”hello”即保存在常量存储区 恩,我想把第一个字符改成’a’ *str='a'; 很明显,这样会报错,因为常量不能改变,”hello”保存在内存常量区,程序编译完成时,这个值就确定了不能改变。