关于 char ch[]和char *ch[] 求教
char word1[]="life is so cool";(这一句是不是每个字符都存在wodr1[i]中了?
cout<<word1<<endl;(为什么能输出word1整个数组内容呢,不是只有一个头指针吗,应该输出word1的指向的内存地址啊,怎么输出了life is so cool?)
char *word2[]={"life","is","so","cool"};(这一句理解不了,char *数组 怎么指向的是一个string对象?)
新手求教了 , 求高手解答下 谢谢
[解决办法]
1.char word[]="life is so cool";
这一句每个字符确实存进了word数组,并且系统自动计算其长度,给它分配了15个空间
2.书上有的,仔细看看书中介绍字符串和指针部分的内容。
3.char *word2[];
这个数组的每一个元素都是一个指针,指向后面每一个单词的首地址。实际上就是一个二维数组
建议楼主多看看书,把指针吃透、理清
俺也是个初学者,共同学习。
[解决办法]
建议你先去看一下字符串相关的内容
char word1[]="life is so cool";
这是一个字符串初始化赋值,相当于
word1[0]='l'
word1[1]='i'
.
.
.
word1[14]='l'
word1[15]='\0'
cout<<word1<<endl是字符串输出,输出从word1开始的字符直到遇到'\0'为止
char *word2[]是个字符指针数组,每一个元素指向一个字符串,
另外字符串不是对象
[解决办法]
字符串的出现有两种情况:
1、初始化字符数组,比如:char word[]="life is so cool";
2、其他的情况,此时表示"char *",比如:
char *word2[]={"life","is","so","cool"};
[解决办法]
1 #include <iostream> 2 #include <stdio.h> 3 4 using namespace std; 5 6 int main() 7 { 8 char word[] = "hello world!"; 9 10 cout << word << endl; 11 cout << (void *)word << endl; 12 printf("The address of word is %x\n", &word[0]); 13 14 return 0; 15 }
[解决办法]
一个数组存指针,一个数组存字符,不一样。