[問題] 字串反轉= =?

看板C_and_CPP作者 (ミⒼⓏ❼❾)時間13年前 (2010/10/15 19:07), 編輯推噓6(6017)
留言23則, 14人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 為什麼char str[10]改成 char *str; 程式跑到一半就會當掉~~ 我想問的問題是 char str1[10] 和 *str 意思不是差不多嗎 我是指str1[10]的str1 和 *str的str 這二個不是都是位址嗎? 為什麼char str[10]就會過,而char *str時 程式就會怪怪的 這二者 到底有什麼不同(我是指同樣都是位址str1、str,為啥一個有成功, 一個是失敗的,是因為str1[10]有index嗎?), 我希望可以得到解惑 謝謝 希望得到的正確結果: abcdefg -> gfedcba 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) dev-c++ 有問題的code: (請善用置底文標色功能) #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char str[10]; // char *str; scanf("%s",str); char temp; int tail=strlen(str); char *phead=str; char *ptail=str+tail-1; for(int i=0;i<strlen(str)/2;i++) { temp=*phead; *phead=*ptail; *ptail=temp; phead++;ptail--; } printf("%s",str); system("pause"); return 0; } 補充說明: 這程式是可以執行的。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.64.111.28

10/15 19:10, , 1F
查你的書,把指標跟陣列的部份看一看
10/15 19:10, 1F

10/15 19:13, , 2F
這程式是我自己想的,只是為啥 str1和str 不是都是位址嗎?
10/15 19:13, 2F

10/15 19:13, , 3F
為啥str1可以用而str就不能用,謝謝
10/15 19:13, 3F

10/15 19:14, , 4F
str[LEN] <- 這個有配空間 *str <- 這個沒配空間
10/15 19:14, 4F

10/15 19:15, , 5F
兩種差很多 置底文看一下 :)
10/15 19:15, 5F

10/15 19:21, , 6F
看了置底文,我好像懂了...應該巴!
10/15 19:21, 6F

10/15 19:31, , 7F
跟我唸一次"陣列不是指標!"
10/15 19:31, 7F

10/15 19:32, , 8F
陣列不是指標!
10/15 19:32, 8F

10/15 19:47, , 9F
不是都是位址嗎 不是都是位址嗎 不是都是位址嗎
10/15 19:47, 9F

10/15 20:01, , 10F
*str沒初始化,可能會指向不能存取的記憶體。
10/15 20:01, 10F

10/15 20:06, , 11F
str1是指標變數,不是位址. 你必須塞一個位址給指標變數.
10/15 20:06, 11F

10/15 20:15, , 12F
char str1[10]的str1是陣列,不是指標變數吧
10/15 20:15, 12F

10/15 20:40, , 13F
請樓上看看主程式部份,str1在哪裡? 其實沒標明.
10/15 20:40, 13F

10/15 20:40, , 14F
彼此知道看錯位置,心知肚明就好,不要認真計較字面.
10/15 20:40, 14F

10/15 23:43, , 15F
反轉我以為用 strrev 就結束了
10/15 23:43, 15F

10/16 01:18, , 16F
呃,好像樓上幾位只說原因卻沒說解法,我提示一下 str要new喔
10/16 01:18, 16F

10/16 01:26, , 17F
char str = new char[10];
10/16 01:26, 17F

10/16 01:32, , 18F
char *str = new char[10];
10/16 01:32, 18F

10/16 01:33, , 19F
或char *str = (char *)malloc(10 * sizeof(char));
10/16 01:33, 19F

10/16 01:42, , 20F
char *str = (char*)HeapAlloc(GetProcessHeap(),0,10)
10/16 01:42, 20F

10/16 04:17, , 21F
我想到前陣子看過yoco大神一篇敘述陣列、指標差異的文章..
10/16 04:17, 21F

10/16 04:18, , 22F
在巴哈姆特看到的,雖然有備份,可是應該是不能直接貼XD
10/16 04:18, 22F

10/18 15:20, , 23F
樓上的貼個網址吧,佳文共賞一下
10/18 15:20, 23F
文章代碼(AID): #1Ck3NVCa (C_and_CPP)