C語言學習趣事_經典面試題_3_續_我糾結的夢啊

來源:互聯網
上載者:User

     前兩天我在園子裡面寫了一篇隨筆, 說了幾個問題, 當時測試用的是WinTC, 後來有幾位大俠對

我的說法不是很同意, 我自己也開始對自己動搖了, 於是對那天說的問題中的其中幾個問題重新在VC 6

中進行測試, 結果測試發現得出的結果大相徑庭, 這也難怪有大俠表示有不同的看法了.............

首先看我在WinTC中測試下面代碼的結果:

View Code

/*
通過下面的函數測試記憶體申請的傳遞機制
1、 voidgetmemory(char **p)函數可以在堆中申請記憶體,
並可以返回給調用getmemory的函數使用
2、char *getmemory(void) 函數也可將申請的空間供調用
getmemory的函數使用
*/

#include <stdio.h>
#include <stdlib.h>

void getmemory(char **p)
{
if(NULL !=(*p=(char *)malloc(100)))
return ;
}

/* 下面函數測試成功
char *getmemory(void)
{
char *p=NULL;
if(NULL !=(p=(char *)malloc(strlen("hello word")+1)))
return p;
}
*/

int main(int argc, char *argv[])
{
char **p=NULL;
*p=NULL;
getmemory(*p);
strcpy(*p, "hello word!");
printf(*p);
free(p);
getch();
}

結果:

而我用同樣的代碼在VC 6中進行測試,得到的結果如下:

我好冤枉啊, 不是我沒有進行測試,而是WinTC騙了我, 我有什麼辦法?

很遺憾, WinTC對C文法的檢測沒有VC 6.0嚴格,所以造成了我的判斷失誤.........

並且有一段代碼我在WinTC中測試下面的代碼的時候得到的是游離的地址,而在VC6.0測試到達的

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.