1樓:匿名使用者
可以用malloc分配一塊空間,儲存很多指標,也可以簡單理解為一個儲存指標陣列
int **p = (int**)malloc(sizeof(int*) * n);
p[0] ~ p[n-1]就是儲存int*的陣列。
2樓:風若遠去何人留
可以的,任何儲存空間,均可以通過malloc函式生成。指標陣列也不例外。
以下是一個生成10個char*型的指標陣列的**,要儲存char*型的陣列,其陣列名,即指標型別,必須為char**型。
char ** p;
p = (char **) malloc(sizeof(char *) * 10);
這裡需要注意兩個地方:
1 指標的強制轉換。
malloc的返回值為void*型,所以在賦值給char**型時,要強制轉換為目標型別。部分編譯器對此檢查不嚴格,但為了可移植性,還是加上強制轉換為好。
2 malloc引數的確定。
malloc引數值為申請記憶體空間的大小,每個char *型的空間為sizeof(char *), 10個空間就再乘10。
一般來說,無論是何種型別type,在申請時均可以寫作
type * p = (type*)malloc(sizeof(type) * n);
這樣的形式。
c語言中,怎麼使用malloc函式為陣列指標分配空間 比如要為char *p[ ]分配空間,應該怎麼弄
3樓:
指標陣列和陣列指標是兩個不同概念,你這裡給出的定義例項實際上是指標陣列的定義。
指標陣列是指所定義陣列的每個陣列元素都是一個相應資料型別的指標,開設空間的操作可以應用迴圈語句進行,例如:對於char *p[10]; 可以應用
for(i=0;i<10;i++)
p[i]=(char *)malloc(sizeof(char)*n); //為每個指標申請開設n字元的儲存空間
開設後,對於p的使用與二維陣列的使用格式類似,可以有效的使用兩個下標,
如 p[0][0]='a';
還可以像每個指標中賦值字串: p[2]="beijing"; 當然字串長度應該小於n。
而陣列指標,是指定義為指向某個固定大小順序空間的指標,定義的格式如下:
char (*pa)[10]; //定義一個指向擁有10元素的字元陣列的指標,
int (*p)[10];
應用格式可以參考下述程式,申請空間、賦值、輸出後,可以觀察到100被賦值到第五行第十個元素,指標可以像二維陣列一樣通過兩個下標引用所申請開設的空間。
#include
main()}
關於c語言陣列和指標和malloc函式的問題,謝謝!
4樓:迷路的國王
你好,因為在這兒,指標和陣列名並不是一回事,你給一個不為指標的陣列名分配記憶體,屬於語法錯誤,出故障是預料之中。
注:陣列名大部分時候當做指標用,但並不是什麼時候都是指標,一定要注意區分啊!
推薦閱讀《c和指標》這本書。
5樓:007多啦
你這幹嘛來著???為何搞個陣列出來,而且還用malloc的返回值賦值????
malloc的返回值是指標地址,而你arr既不是用來放指標的變數,又不是可以被賦值的左值。
arr在被賦值之前至少要有個下標把,像 arr[2] 。
有了下標了也不行,你在定義arr的時候要這樣:
int * arr[elem]; //這樣的話,arr裡面任何一個成員都可以指向一個int變數的地址了。
所以要改動的有兩個地方,一個是int * arr[elem]; 一個是被malloc函式賦值的arr那個地方。
c語言中怎麼使用malloc函式?
6樓:程式小兵
malloc只是動態分配記憶體儲存空間。
void *malloc(long nbytes):該函式分配了nbytes個位元組,並返回了指向這塊記憶體的指標。如果分配失敗,則返回一個空指標(null)
例如:char *ptr = null;
ptr = (char *)malloc(100 * sizeof(char));
就是這樣!當然,具體情況要具體分析以及具體解決。比如說,你定義了一個指標,在一個函式裡申請了一塊記憶體然後通過函式返回傳遞給這個指標,那麼也許釋放這塊記憶體這項工作就應該留給其他函式了
7樓:獨思有疑
先定義後使用
陣列int a[10];
變數int b;b=9;等
全都是書上的東西~!
c中指標怎麼用,c語言中指標怎麼使用
int p 宣告一copy個指向int的指標pint a a 3 p a printf d p 列印a的地址printf d p 列印a的值 p 4 改變a的值。printf d a 列印a的值為4 推薦看書 c和指標 這裡最好的回答吧,指標可不是一天兩天能夠學會的 c語言中指標怎麼使用?1 使用場...
請教c語言中指標陣列的問題如下
你好,你猜的沒錯,的確是指標問題,你想想哈,temp是一個char,你每一次都把 temp這地址賦值給c i 導致c i 用的記憶體空間始終是temp所在的記憶體空間。fgets temp,6,fp 這語句導致temp記憶體空間存放的是 zzzzz 而每一個c i 都指向temp所在記憶體空間,所以...
在c語言中指標佔用多少位元組,在C語言中一個指標佔用多少位元組。
一個指標變數在記憶體中佔兩個位元組 all模式編譯 一個指標變數在記憶體中佔四個位元組 32位機器上 一般都是32位機器的,所以四個位元組咯。指標即為地址,指標幾個位元組跟語言無關,而是跟系統的定址能力有關。指標是一個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的一個地址。要搞清一個指標需要搞清指...