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 語句的語法具有以下幾...