C 問題,跪求下面指標是為什麼錯,求詳解

2021-05-24 11:49:49 字數 538 閱讀 5381

1樓:匿名使用者

第一種,p=(char*)malloc(100);簡單的給形參p賦值為新分配的記憶體地址,不過我們知道,改變形參的值,並不能改變實參的值,所以char *str=null;在getmemory執行之後,仍然是null指標。

第二種,char p="hello world";,這是堆疊上的臨時變數,只在函式呼叫到getmemory的時候有效,getmemory返回到test中的時候,已經無效了

第三種,無論如何,free之後的指標不應該繼續使用,它不會立即出錯,但是會在將來的某個時刻,毀掉你的程式。

第四中,通過傳遞地址呼叫,可以為str實際賦值為有效記憶體地址,通常都是這麼做的。

2樓:匿名使用者

#include

#include

#include

char *getmemory(int n)void test(void)

int main()

/*void *getmemory(void)void test(void) }*/

c語言這段括號匹配程式為什麼是錯的

標頭檔案 另存為seqstack.h typedef struct seqstack void stackinitiate seqstack s 初始化順序堆疊s int stacknotempty seqstack s 判順序堆疊s非空否,非空則返回1,否則返回0 int stackpush se...

C語言裡面陣列與指標的問題,為什麼陣列名與陣列名輸出是值,如圖所示

宣告裡定義了 int a 所以 a 是一維陣列語句裡,a 是 一維陣列 的名字,所以它代回表 a 陣列 的首地址。答 如果 宣告 是 int a 是簡單 變數,則 語句裡 a 表示 變數 a 的 值 語句裡,a 是 求 a 的地址。對於陣列a,它等於 a 0 或 a 0 也就等於 a 如果 宣告 是...

下面這個C語言題目答案為什麼是這樣的

ch 0 1 ch 1 2 ch 2 a 因為ch 2 a 在ch i 0 ch i 9 中為false,所以for迴圈實際上只執行一次,s 10 s ch i 0 10 0 1 0 1 因為做了i 2後跳到了字母a上,於是就結束迴圈了,不往後跳 下面這個c語言題是什麼鬼啊 首先題目有誤,不應該出現...