[問題] 使用指標宣告字串的問題
初學者在不知道有 #include <cstring> 的情況下
一般我們宣告一個字串的方式是
char str[] = "Hello"; //字元陣列
或是使用 指標來宣告字串
char *str = "Hello";
Q1. 以上應該沒有理解錯誤吧?
============================================
我使用 strcat 串接兩個字串
char str1[] = "Hello";
char str2[] = "World";
strcat(str1, str2);
cout << str1 << endl; // 印出HelloWorld
Q2. 以上應該也沒有問題吧?
=============================================
後來我把字串改成用指標宣告
char *str1 = "Hello";
char *str2 = "World";
strcat(str1, str2);
cout << str1 << endl;
一編譯程式就當掉了!
Q3. 到底是出了什麼問題??
=============================================
我又使用 strcpy 玩玩看
char str1[] = "America";
char str2[] = "Taiwan";
strcpy(str1, str2);
cout << str1 << endl; // 印出Taiwan
Q4. 這裡也沒有錯吧?
==============================================
換成用指標宣告str2字串
char str1[] = "America";
char *str2 = "Taiwan";
strcpy(str1, str2);
cout << str1 << endl; // 印出Taiwan
Q5. 這裡應該也是正確的吧?
===============================================
我不死心又做了另一個測試
char *str1 = "America";
char *str2 = "Taiwan";
strcpy(str1, str2);
cout << str1 << endl;
Q6. 程式又掛掉了? 為什麼...
===============================================
我自己得到一個結論
好像用指標宣告的字串
你不能對它改變作任何修改
其實 應該就是對指標的概念不夠清楚
還請各位成是先進指點迷津...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.251.201.200
→
05/01 19:17, , 1F
05/01 19:17, 1F
→
05/01 19:22, , 2F
05/01 19:22, 2F
→
05/01 19:28, , 3F
05/01 19:28, 3F
→
05/01 19:28, , 4F
05/01 19:28, 4F
→
05/01 19:29, , 5F
05/01 19:29, 5F
→
05/01 19:30, , 6F
05/01 19:30, 6F
→
05/01 19:31, , 7F
05/01 19:31, 7F
→
05/01 19:43, , 8F
05/01 19:43, 8F
→
05/01 19:46, , 9F
05/01 19:46, 9F
→
05/01 19:47, , 10F
05/01 19:47, 10F
→
05/01 19:52, , 11F
05/01 19:52, 11F
推
05/01 19:54, , 12F
05/01 19:54, 12F
→
05/01 19:55, , 13F
05/01 19:55, 13F
→
05/01 19:56, , 14F
05/01 19:56, 14F
→
05/01 20:39, , 15F
05/01 20:39, 15F
→
05/01 20:40, , 16F
05/01 20:40, 16F
→
05/01 20:42, , 17F
05/01 20:42, 17F
→
05/01 22:51, , 18F
05/01 22:51, 18F
→
05/01 23:03, , 19F
05/01 23:03, 19F
推
05/01 23:13, , 20F
05/01 23:13, 20F
→
05/01 23:14, , 21F
05/01 23:14, 21F
→
05/01 23:15, , 22F
05/01 23:15, 22F
→
05/01 23:15, , 23F
05/01 23:15, 23F
→
05/01 23:18, , 24F
05/01 23:18, 24F
→
05/02 00:25, , 25F
05/02 00:25, 25F
推
05/02 02:00, , 26F
05/02 02:00, 26F
→
05/02 02:01, , 27F
05/02 02:01, 27F