c語言指標陣列不需要分配記憶體,C語言 指標陣列不需要分配記憶體?

時間 2021-08-31 06:06:47

1樓:天雲一號

指標陣列是需要分配記憶體單元的。

指標陣列表示一個指標型別的陣列,陣列中每個元素都是一個指標,而c語言中指標只佔4個位元組,所以指標陣列所佔的記憶體大小為4*n(n為陣列的大小)。

舉例如下:

int *a[5]; // 定義一個int型別的指標陣列,共5個元素,每個元素都是一個int型別的指標,共佔用4*5=20個位元組的記憶體單元,這是在程式編譯的時候進行記憶體分配的。

2樓:

char *pstr[10]中的pstr是一個陣列,單獨使用pstr時有指標的效果指向陣列的記憶體。

char *pstr是一個未初始化的指標變數。使用pstr時指向的未分配記憶體。

3樓:莊政警

char *pstr[10]; //這個會給pstr分配 40個位元組的連續空間用來儲存10個char*

而scanf和printf中的對pstr的解釋取決於格式符

scanf("%s", pstr); //%s格式符會把psrt看作char*,於是把上面分配的記憶體當作char[40]使用了

printf("the string input is %s", pstr); //同樣的這句把pstr當作char*了

char *pstr[10]; //pstr是個陣列,不是指標,它佔用40位元組的空間,它有10個元素,每個元素都是指標,這些指標沒有初始化

4樓:祭月魂v牙

%s會賦給pstr字串的地址,

而%c則對pc進行賦值(非地址值),顯然錯誤。

5樓:匿名使用者

pstr是指向指標陣列的指標啊。。為毛會出錯40byte的指標陣列存不下你一個char麼

對了,如果不是32位x86可能不是40byte。。也許更多

6樓:

char * pstr[10];//代表有一個指標陣列,有10個字元(串)指標元素;

scanf("%s",pstr);//代表給pstr[0]賦值,這個值仍然是一個整型地址,

printf("the string input is %s",pstr);//輸出的只是pstr[0]指標指向的地址,並不是pstr[0]指標指向地址的內容.

//帖圖給你看看(我給pstr[0]賦值1234,將轉換成一個地址0x34333231,但它仍然是個錯誤的指標)

c語言中,怎麼使用malloc函式為陣列指標分配空間 比如要為char *p[ ]分配空間,應該怎麼弄

7樓:

指標陣列和陣列指標是兩個不同概念,你這裡給出的定義例項實際上是指標陣列的定義。

指標陣列是指所定義陣列的每個陣列元素都是一個相應資料型別的指標,開設空間的操作可以應用迴圈語句進行,例如:對於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記憶體分配的問題 80

8樓:匿名使用者

struct student *list;

int count = readstudentinfo("假設這是檔名", &list);

這個函式是這樣被呼叫。

裡面應該這樣寫

int readstudentinfo(const char* filename, struct student** pstudents)

9樓:匿名使用者

這麼多,。。。。。。。

C語言指標動態記憶體分配,C語言中的動態記憶體分配的用法舉例

void malloc size t size 這個函式請求分配大小為size位元組的記憶體,並返回指向該塊記憶體起始位置的指標 它接受的引數型別size t是unsigned int的一個typedef,這種型別用來表示資料型別的大小 如char型別的大小為1 位元組 它返回的是一個void 型別...

c語言問題,陣列與指標,C語言陣列和指標的問題

char a computer a指向一個常量字串,常量字串是不能修改的,而你的for迴圈內要修改a指向的這個常量字串,自然要出錯 char a computer 這個a就是個普通陣列了,它的內容是可以改動的,就不會出錯了 因為 a是個指標啊 所以應該賦值賦地址!所以 應該 char a compu...

c語言關於為指標的指標分配記憶體的問題

首先 int 是一個二級指標,它是指標的指標,如果你要申請一個二維陣列,有下面兩個方法 int val int malloc sizeof int 10 int i for i 0 i 10 val i int malloc sizeof int 10 然後你可以這樣引用 val m n value...