作者hansi (Jamie)
看板Programming
標題[問題][C語言] pointer的問題
時間Thu Jun 11 10:55:53 2009
請問以下程式的問題是那邊呢?
1.
#include <stdio.h>
void main(void)
{
char *pt;
*pt = 'a';
getchar();
}
用了Devcpp 跟visual studio express 2008 compile都會過
不過run的時候就crash了
後來改成
2.
Char *pt,ch;
ch = 'a';
pt = &a;
getchar();
這樣才可以
想請教一下為何不能像1這樣使用呢?
因為手邊有兩本c的書(蠻老的)裡面都有1這樣的例子,
eg: int *pt = 0; 不過我run這個也是會crash
一開始我以為是電腦有問題,後來試了其他兩台也一樣
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.11.186.96
1F:推 mryf:因為1.沒有記憶體空間 140.112.30.46 06/11 11:03
2F:→ hansi:不過我手邊有本Turbo c裡面直接這樣寫耶.. 124.11.186.96 06/11 11:06
3F:→ hansi:還有一本IBM 的c也是這樣教 124.11.186.96 06/11 11:07
4F:→ godfat:拿去回收吧,資源要有效利用.. 220.128.121.87 06/11 11:28
5F:推 horngsh:因為常數並沒有左值(L-Value) 125.224.12.211 06/11 14:07
6F:推 freesamael:pt 指向一個隨機記憶體空間 140.124.182.91 06/11 14:49
7F:→ freesamael:寫入時會產生不合法的記憶體存取 140.124.182.91 06/11 14:49
8F:→ freesamael:在 Linux 上會看到 Segmentation Fault 140.124.182.91 06/11 14:49
9F:→ freesamael:Windows 上就會問你要不要回報了... 140.124.182.91 06/11 14:49
10F:→ hansi:好吧..回收 124.11.190.20 06/11 19:38
11F:→ hansi:後來朋友說要用malloc先要空間才能用 :p 124.11.190.20 06/11 19:38