1樓:匿名使用者
就相當於
char p[20];
只不過用malloc()直接分配了記憶體單元。
t=(char*)malloc(n*sizeof(char))的含義?
2樓:匿名使用者
申請分配n個單位char記憶體空間,並把指標賦予t
3樓:沙漠浮萍
原型:extern void *malloc(unsigned int num_bytes);
標頭檔案:自在tc2.0中可以用malloc.
h或 alloc.h (注意:alloc.
h 與 malloc.h 的內容是完全一致的),而在visual c++6.0中可以用malloc.
h或者stdlib.h。
功能:分配長度為num_bytes位元組的記憶體塊
返回值:如果分配成功則返回指向被分配記憶體的指標(此儲存區中的初始值不確定),否則返回空指標null。當記憶體不再使用時,應使用free()函式將記憶體塊釋放。
函式返回的指標一定要適當對齊,使其可以用於任何資料物件。
說明:關於該函式的原型,在舊的版本中malloc返回的是char型指標,新的ansic標準規定,該函式返回為void型指標,因此必要時要進行型別轉換。
名稱解釋:malloc的全稱是memory allocation,中文叫動態記憶體分配,當無法知道記憶體具體位置的時候,想要繫結真正的記憶體空間,就需要用到動態的分配記憶體。
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.
int *t; t=(char*)malloc(n*sizeof(char)):c語言中什麼意思啊?求解答
5樓:匿名使用者
int *t;表示定義int型的指標變數t
(char*)實現指標的強制型別轉換(因為後面的那個函式返回值的型別是void型別的指標)
malloc還有後面的括號裡的整個是一個函式,返回void型指標,用來申請額外的記憶體空間,返回的指標指向所申請記憶體空間的首地址,若記憶體不夠申請失敗則返回null
malloc後面的括號裡的內容是對該函式輸入的引數,意義是所需要申請的記憶體的總大小,上面的式子中用的是一個運算結果的值當做引數值輸入
那個算式的n應該是你要儲存的物件的個數,sizeof函式用來算單個char型別變數的大小,相乘的結果就是總大小
整體來說,就是在為n個char型別的變數申請儲存空間,把申請到空間的首個單元的地址存到指標t中
6樓:匿名使用者
如果把malloc分配記憶體看作是買塊地皮,那麼這句話的意思就是我要申請買塊地,這塊地的大小是 n。然後系統分配了一塊地給你,但這塊地肯定有座標的對吧,不然你上哪兒去找到這塊的呢,所以用t這個變數把位置記錄起來,以後我想要在這塊地上造房子什麼的,直接從t中獲得位置。
7樓:匿名使用者
malloc是個函式表示開闢一塊記憶體空間 開多少 sizeof(char)表示一個char型別空間 乘上n就是就是所開空間的大小 然後最前面的(char *)表示開闢的空間是放char型別資料的
c語言 關於malloc的問題 char *p; p=(char *)malloc (20 * sizeof (char ) ); 和char p【20】有什麼區別呢
8樓:匿名使用者
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);
9樓:匿名使用者
這個首先你要搞明白堆空間和棧空間,用malloc分配的記憶體是在堆空間的,如果你不free,這個空間在程式的執行過程中就一直存在。如果是定義的臨時的陣列變數,那他是在棧裡面,這個空間在函式執行完,會被系統**。
定義的陣列不可能發生記憶體不夠的現象,如果不夠,編譯都通不過。
10樓:匿名使用者
malloc是在堆空間開的記憶體 屬於靜態的 必須要程式設計師自己用free()去釋放這段空間
當記憶體不夠時 malloc()回返回錯誤的
char p【20】 是在棧空間中開啟的記憶體 當次函式結束棧中的所有變數都會被釋放
c語言定義char **p;p=(char *)malloc(sizeof(char)*5);p是什麼?
11樓:匿名使用者
char **p;定義一個二維指標
p=(char **)malloc(sizeof(char*) *5); 先分配行空間
for( i=0;i<5;i++ )
p[i]=(char *)malloc(sizeof(char)*15); 再分配每一行的空間
這樣才正確
12樓:左灬王
堆指標 **p是堆指標的地址
幫我解釋一下這句話什麼意思,謝謝
大致釋義 年輕人進入社會 展開自己的人生,須要學會三件事。1 接受社會中普遍存在的 與自己認知相悖的現象。社會是複雜的 世事的產生髮展是存在諸多因素的,涉世未深的人在最初面對它們時會難以忍受,然而卻無力去深究和改變它們,倘若執意與之為敵,不但不能真正地辨別善惡和伸張正義,也容易因忤逆世俗而受到傷害。...
這句話什麼意思,幫我解釋一下,這句話什麼意思?知道幫我解釋一下
意思是他和你一起親熱 如果你敢絕不可以讓一個人留戀太長時間的話,那麼我感覺你就應該好好的去照顧自己。啊?這你不知道?這句話什麼意思?知道幫我解釋一下 只是心中的感慨萬千 當作前世相欠。這意思是說,心中有無限感慨。目前這個忙一定幫。就當是前世欠的。此生來還的意思。請幫忙解釋一下這句話是什麼意思 我覺得...
誰能解釋一下這句話什麼意思,誰能解釋一下這句話什麼意思??
希望可以跟你談戀愛,這輩子就想跟你過了 望樓主採納 讓我的真心能打動你,我會為你看到美麗的愛情,我們一起共度餘生,編織出美好的回憶。白頭偕老 認為他愚蠢得人認為一個瞎子什麼也看不見點燈不是浪費麼,認為他智慧的人認為瞎子點燈不是為自己點燈,更是為了別人點亮一盞明燈在黑暗前進的道路上 不僅照亮了自己前進...