作者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