計算機c語言中void f(char pp(charmalloc(10s

2021-03-27 19:02:10 字數 3562 閱讀 2460

1樓:冽冽不是逗比

不會有任何影響

當然 如果你去掉p=(char *)malloc(10);這行就會有影響了

實際上 當你的 指標假定是 p1 傳進來的時候 函式會生成乙個 p 這個p會指向p1指向的位址

此時 改p位址裡的內容 就是改了p1裡的內容但是 經過 再一次對p賦值後 p1和p已經不是指向同乙個位址了 所以 就不會影響到外面的p1了

2樓:匿名使用者

會影響的,你自己可以在電腦上驗證

void getmemory(char *p){ p=(char *)malloc(100); } void test(void){ char *str=null; getmemory(str);

3樓:匿名使用者

//這是原來的函式,使用的是值傳遞方式

void getmemory(char *p)//這是正確的記憶體分配函式,使用的是雙重指標,傳遞進來的是str的指標位址,*p就是原來的str

void getmemory2(char **p)//這是使用引用的記憶體分配函式

c語言型別題main(){ char *p,*q; p=(char*)malloc(sizeof(char)*20);q=p; scanf("%s%s",p,q);

4樓:tt靜水深流

malloc函式,在堆中分配一片記憶體,記憶體大小為傳遞引數,sizeof(char)*20就是20個位元組。

返回值為void *型別,使用(char*)強制轉換,使得型別匹配。

q=p後,q和p指向的是同一片記憶體空間。

scanf("%s%s",p,q);因為p,q指向同一片記憶體空間,先輸入ijk放入p,其實*p和*q都是ijk。

後面輸入xyz放入q,p和q所指的都是xyz.

char *p,*malloc(); p=malloc(...);中*malloc()是什麼??

5樓:谷歌地

malloc中填入

需要分配抄的位元組數,襲

比如int大多是4個位元組bai,那麼就填入du4,但一般都使用動態計zhi算,比如需要做乙個dao10個元素的int動態陣列,這樣寫

int* p = (int*)malloc(sizeof(int) * 10);

c語言中怎麼得到乙個指標所指的空間的大小,如:char *p=(char *)malloc(10*sizeof(char));

6樓:金色潛鳥

char *p=(char *)malloc(10*sizeof(char)); 我們知道 是 10。但我們沒有簡單方法能獲得「10」。

通過 calloc, malloc, realloc 分配的空間 (實際消耗的heap空間) 用 函式

size_t _msize( void *memblock ); 可以獲得。

獲得的位元組數,可能大於10。估計原因同 分配結構空間類似,考慮對齊或考慮什麼,要多用去一點空間。

#include

#include

main()

我的編譯器編譯運算結果,輸出 是 16。

7樓:情義

"通過 calloc, malloc, realloc 分配的空間 (實際消耗的heap空間) 用 函式

size_t _msize( void *memblock ); 可以獲得。

具體如下:

#include

#include

main()

編譯器編譯運算結果,輸出 是 16。"

8樓:匿名使用者

得不到的,定義常量吧

9樓:匿名使用者

只能10*sizeof(char)

c語言問題

10樓:匿名使用者

。。bai。。。。。。du。。。。引數被換zhi了 形參和實參 b.name 和 函式daof的 char *p 不是一樣

版的權,

p的值 = b.name 的值,就想int a,b ; a=b=100;一樣,兩個值相等,但是不是乙個變數 ,

然後p = b.name ,執行f()函式

p = (char *)malloc (10); 這個時候就改變了p的值,使p指向了另一塊記憶體 ,就像把剛才的例子 加乙個語句 b=11;一樣,a=100 ,b = 11;

b.name的值沒有改變 p的值指向了qian 但是b.name的值沒變還是 zhao

c語言 關於malloc的問題 char *p; p=(char *)malloc (20 * sizeof (char ) ); 和char p【20】有什麼區別呢

11樓:匿名使用者

void main(int argc, char * argv){int nc=100, nr=200;

int i,j;

char **a; // a[nr][nc] -- *a[nr] -- a[j][i]

a = (char **) malloc(sizeof(char *) * nr);

for (j=0;j釋放空間: free(a);

12樓:匿名使用者

這個首先你要搞明白堆空間和棧空間,用malloc分配的記憶體是在堆空間的,如果你不free,這個空間在程式的執行過程中就一直存在。如果是定義的臨時的陣列變數,那他是在棧裡面,這個空間在函式執行完,會被系統**。

定義的陣列不可能發生記憶體不夠的現象,如果不夠,編譯都通不過。

13樓:匿名使用者

malloc是在堆空間開的記憶體 屬於靜態的 必須要程式設計師自己用free()去釋放這段空間

當記憶體不夠時 malloc()回返回錯誤的

char p【20】 是在棧空間中開啟的記憶體 當次函式結束棧中的所有變數都會被釋放

char *p = malloc(10);

14樓:張新生

malloc的原bai型:

extern void *malloc(unsigned int num_bytes);

#include 或#include

這個你可du以寫成:

charp *p=(char*)malloc(10);zhi如果想dao進一步了解版malloc,給你個你看看權http://zhidao.baidu.

***/question/120585285.html

15樓:匿名使用者

1.包含stdlib.h檔案

2.改為char *p = (char *)malloc(10);

16樓:匿名使用者

char *p =(char*) malloc(10);

c語言中的ER圖是什麼計算機c語言中什麼是ER圖,怎麼畫

e r圖也稱實體 聯絡圖 entity relationship diagram 提供了表示實體型別 屬性和聯絡的方法,用來描述現實世界的概念模型。構成e r圖的基本要素是實體型 屬性和聯絡,其表示方法為 實體型 entity 具有相同屬性的實體具有相同的特徵和性質,用實體名及其屬性名集合來抽象和刻...

計算機C語言中i 和 i有什麼區別?最好能講的淺顯易懂點,謝謝

總的來說 i 與來 i最重要的區別在源於 i 先使用 後自增bai如這時s的值為0 因為du先使用zhii的值來進行相加,而i和s的初值dao都為0所以相加的結果還是為0,而i的值會變為1 而 i則不同,i是先自增後使用如 int i 0,s 0 s s i 為了使你更好的理解我給 i加了個括號,不...

計算機程式語言中的while之後的wend什麼意思

wend本意是走,但是在計算機語言中就表示對while與wend之間的程式進行迴圈,可以理解為will and 光環國際 wend在計算機語言中表示對while與wend之間的程式進行迴圈。語法while condition statements wend while.wend 語句的語法具有以下幾...