c++中:
char arry[ ]="hello world";在棧上分配一個局部數(shù)組。
char *ptr =“hello world”;在全局空間分配一個全局數(shù)組登渣。
二者異同:
(i)“hello world!”都是占用13個字節(jié)(其中最后一個為空字符結(jié)束標志)贾铝;
(ii) ptr是一個char *類型的變量,占用4個字節(jié)庞钢;arry是一個char[13]類型的變量,占用13個字節(jié)因谎;
(iii)cout<< ptr<<endl; 輸出hello world!
cout<<*ptr<<endl;輸出h;
cout<<arry<<endl;輸出hello world!
cout<<*arry<<endl;輸出h;
(iv)數(shù)組形參基括,不能以值傳遞的方式傳遞數(shù)組,可以寫成類似數(shù)組的形式
void print(const int *);
void print(const int [ ]);
void print(const int [10]);//維度表示期待的元素個數(shù)财岔,實際不一定风皿;
即:數(shù)組作為參數(shù)傳遞個函數(shù)時傳遞的是指針而不是數(shù)組,傳遞的是數(shù)組的首地址匠璧。
(v)分配內(nèi)存空間不同
ptr是分配一個全局數(shù)組桐款,全局數(shù)組是全局變量,對應內(nèi)存中的全局區(qū)域患朱,保存在普通數(shù)據(jù)段(靜態(tài)存儲區(qū))鲁僚;
arry是分配一個局部數(shù)組,局部數(shù)組是局部變量,對應的是內(nèi)存中的棧冰沙。