为什么cout里面不能输出字符串?
因为char *str这个定义了一个类型为char *的字符型指针str ,而str指向了 I LOVE CHINA!中的第一个字符I。
cout流里面有一个循环就是输出str指向的字符串,其中把str赋给了temp指针,作为移位用,从而一个个输出出来。
而*str是一个字符了就是I ,*是解引用 就是读出str指向的字符 ,所以*str就是I了 这个是不能赋值和移位的 所以输出不出来。
扩展资料:
关于指向字符串的指针
1、用字符数组存放一个字符串
char string[]="Linux C";
printf("%s
",string);
string是一个字符数组名,它同时也是该字符数组的首地址。
2、用字符串指针来指向字符串
如果不想定义字符数组,就可以只用一个指向字符串的指针,叫“字符串指针”,例如:
char *p="Linux C";
printf("%s
",p);
“Linux C”是一个字符串常量。C语言对于字符串常量的处理方法:在内存中开辟一个字符数组来存储该字符串常量,并把开辟出的字符数组的首地址赋给p。
绛旓細鍖呭惈杈撳叆杈撳嚭澶存枃浠秈ostream鍚庨潰灏戜簡.h鎵╁睍鍚嶏紝搴斿啓涓猴細include iostream.h
绛旓細浣犳槸鎯宠緭鍑'\0'杩欎釜瀛楃锛岃繕鏄"\0"涓や釜瀛楋紵'\0'涓嶈兘杈撳嚭锛屾槸涓涓┖瀛楃銆傛兂杈撳嚭涓や釜瀛楋紝浣犲緱杩欎箞鍐欙細str="\\0";姝ゅ锛宻tr='\0'浼氭妸str缃浂锛岃繖寰堝嵄闄┿傜浉褰撲簬璁块棶鍐呭瓨涓湴鍧涓洪浂鐨勫尯鍩燂紝鍥犺屼細鎶ラ敊銆
绛旓細鍏抽敭涓鍐cout cin锛堣繖灏辨槸杈撳嚭锛岃緭鍏ワ級銆傚湪浜庝綘鐨刟鏄痗har鍨嬶紙瀛楃鍨嬶級锛沜har a=8琛ㄧずASCLL鍊间负8鐨勫瓧绗︺傚鏋滀綘瑕佽緭鍑8锛屽簲璇ユ槸a='8'(杩欐墠鏄祴鍊糰涓8)
绛旓細杩欐槸鐜闂銆備綘鏄杈撳嚭鍒惰〃瀛楃鍚э紝cmd榛樿鏄痗p936涓枃鐜锛屽埗琛ㄧ浼氫紭鍏堣В鏋愪负涓枃锛屾墍浠ヤ贡鐮佷簡銆傝В鍐冲姙娉曪紝缂栬瘧鎴恊xe涔嬪悗锛屾墦寮涓涓猚md绐楀彛锛屾墽琛 chcp 437锛岀劧鍚庤繍琛屼綘鐨別xe绋嬪簭銆傚簲璇ュ氨鍙互浜嗐俢hcp 437锛屾槸鎶婂綋鍓嶇獥鍙g殑瀛楃闆嗚瀹氫负缇庡紡鑻辫銆
绛旓細鍙互閫氳繃閫愪釜杈撳嚭瀛楃鏁扮粍鍏冪礌鐨勬柟寮忚繘琛岃緭鍑恒 濡傛灉鐩存帴杈撳嚭鏁扮粍鍚嶏紝绯荤粺榛樿浠ュ瓧绗︿覆鏂瑰紡杈撳嚭锛岄亣鍒扮粨鏉熺\0灏变細鍋滄銆傝鏃犳潯浠惰緭鍑哄瓧绗︽暟缁鍐鐨勬墍鏈夊厓绱犱釜鏁帮紝閭d箞鍙兘閬嶅巻鏁扮粍锛岄愪釜鍏冪礌杈撳嚭銆
绛旓細涓琛屻備竴鏃︿竴鏉¤鍙ヨ""鎷捣鏉ワ紝閭h繖鏉¤鍙ュ氨鎴愪簡涓涓滃父瀛楃涓鈥濅簡锛岀郴缁熷氨鍙寜涓涓父瀛楃涓插鐞嗭紒
绛旓細int ab[10] = {1,2,3,6,7};char a[6] = {'h','a','p','p','y','\0'};char ac[] = "happy";cout<<ac<<endl;cout<<ac<<endl;cout<<ab<<endl;瀛楃鏁扮粍鏄彲浠ョ敤杩欑鏂瑰紡杈撳嚭鐨,鍥犱负鏁扮粍鍚嶅嵆浠h〃棣栧湴鍧,鏁扮粍鏄竴鍧楄繛缁殑鍐呭瓨绌洪棿,鎵浠ヨ兘鐩存帴杈撳嚭.濡傛灉鏄叾浠栫被鍨嬬殑鏁扮粍鍒...
绛旓細閭f槸鍥犱负浣犵殑瀛楃涓叉病鏈夊垵濮嬪寲锛屽彲浠ヤ娇鐢╩emset锛坢ingzi,0,10锛夊皢鎵鏈夌殑瀛楃鍒濆鍖栦负0锛岃繖鏍瀛楃涓茶緭鍑鐨勬椂鍊欙紝閬囧埌0鏃跺氨涓鍦ㄨ緭鍑猴紝灏变細瀹屽叏灏嗚祴鍊肩殑瀛楃杈撳嚭銆
绛旓細濡傛灉浣犳槸鐢╟har瀹氫箟浜嗗瓧绗︽暟缁勭殑璇濓紝 鐩存帴杈撳嚭瀛楃鏁扮粍鍚嶅氨琛屼簡锛屽鏋滀綘鐢ㄧ殑string绫伙紝 鍚屾牱鐩存帴杈撳嚭銆備唬鐮佸涓嬶細#include <iostream>#include <string>using namespace std;int main(){string s;char str[100];cin >> s;cin >> str;cout << s << endl;cout << str;return 0;} ...
绛旓細濡傛灉鎸夌収杩欎釜褰㈠紡杈撳叆锛岄偅涔堣偗瀹氭槸鏃犳硶鐢ㄧ浜岃呰緭鍏ョ殑锛屽洜涓虹浜屼釜璺熺涓鑰呮槸鏈夋墍鍐茬獊鐨勫憖