亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 2976 | 回復(fù): 12
打印 上一主題 下一主題

c語言的兩個(gè)問題? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-02-20 10:23 |只看該作者 |倒序?yàn)g覽
例1:
char *p="hello";
p[0]='X';

問題1:
例1這個(gè)程序運(yùn)行是正常的,但有一點(diǎn)我不明白。指針p指向的是字符串常量”hello",不是說字符串常量不可以改動(dòng)嗎,為什么還能正常運(yùn)行呢????


例2
char *p=NULL;
p=(char *)malloc(sizeof(char)*100);
free(p);
strcpy(p,"hello");
puts(p);

問題2:
例2這個(gè)程序運(yùn)行是正常的,但有一點(diǎn)我不明白。free(p),不是把p指針指向的內(nèi)存釋放了嗎,為什么strcpy(p,"hello")還好用呢??????

論壇徽章:
3
白羊座
日期:2013-11-05 12:59:14子鼠
日期:2014-01-29 14:14:50戌狗
日期:2014-02-11 16:21:45
2 [報(bào)告]
發(fā)表于 2010-02-20 10:33 |只看該作者
問題1:取決于編譯器。
問題2:free的作用是告訴OS“這塊內(nèi)存我不用了,可以拿去給別人用”,但并不會(huì)阻止你繼續(xù)“偷偷地”用它。偷偷用的后果是一旦“別人”也用到了這塊內(nèi)存,你們倆就沖突了

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2010-02-20 10:47 |只看該作者
謝謝

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2010-02-20 11:02 |只看該作者
問題1:取決于編譯器。
問題2:free的作用是告訴OS“這塊內(nèi)存我不用了,可以拿去給別人用”,但并不會(huì)阻止 ...
ahocat 發(fā)表于 2010-02-20 10:33



    好你還沒有看過哪個(gè)編譯器不支持呢。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2010-02-20 11:15 |只看該作者
程序1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
   char *a;
   a=(char *)malloc(sizeof(char)*100);
   strcpy(a,"hello");
   while(1){
       printf("address[%d]\n",a);
       puts(a);
       sleep(1);
   }
   return 0;
}

程序2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
   char *a;
   while(1){
       a=atoi(argv[1]);
       printf("address[%d]\n",a);
       strcpy(a,"world");
       puts(a);
       sleep(1);
   }
   return 0;
}

這兩個(gè)程序指向同一個(gè)內(nèi)存地址為什么互不影響???

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2010-02-20 11:17 |只看該作者
問題1:取決于編譯器。


哪些支持編譯器支持,那些不支持?

論壇徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-03 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-04 06:20:00
7 [報(bào)告]
發(fā)表于 2010-02-20 11:20 |只看該作者
好你還沒有看過哪個(gè)編譯器不支持呢!
chinesedragon 發(fā)表于 2010-02-20 11:02


編譯器一般不會(huì)管那么多,最多一個(gè)警告,但運(yùn)行就難說了,看系統(tǒng)了。
系統(tǒng)上,如果read only真的是read only,那就掛了。
linux-0gt0:~/weiqi # cat 1.c
#include <stdio.h>
int main()
{
        char *p="hello";
p[0]='X';
printf("%s\n",p);
        return 0;
}
linux-0gt0:~/weiqi # gcc 1.c -Wall
linux-0gt0:~/weiqi # ./a.out
Segmentation fault

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2010-02-20 11:32 |只看該作者
哦,我用sco和aix都可以

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2010-02-20 11:45 |只看該作者
程序1
#include
#include
#include
int main(int argc, char **argv)
{
   char *a;
   a=(char  ...
zjgbkhm 發(fā)表于 2010-02-20 11:15



    這程序能編譯過嗎???????

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2010-02-20 11:49 |只看該作者
能編譯過去,還能正常運(yùn)行
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP