許多程序員對數(shù)組名和指針的區(qū)別不甚明了,他們認為數(shù)組名就是指針,而實際上數(shù)組名和指針有很大區(qū)別,在使用時要進行正確區(qū)分,其區(qū)分規(guī)則如下:
規(guī)則1 數(shù)組名指代一種數(shù)據(jù)結構,這種數(shù)據(jù)結構就是數(shù)組;
char str[10];
char *pStr = str;
cout << sizeof(str) << endl;
cout << sizeof(pStr) << endl;
輸出結果為:
10
4
這說明數(shù)組名str指代數(shù)據(jù)結構char[10]。
規(guī)則2 數(shù)組名可以轉換為指向其指代實體的指針,而且是一個指針常量,不能作自增、自減等操作,不能被修改;
char str[10];
char *pStr = str;
str++; //編譯出錯,提示str不是左值
pStr++; //編譯正確
規(guī)則3 指向數(shù)組的指針則是另外一種變量類型(在WIN32平臺下,長度為4),僅僅意味著數(shù)組的存放地址;
規(guī)則4 數(shù)組名作為函數(shù)形參時,在函數(shù)體內(nèi),其失去了本身的內(nèi)涵,僅僅只是一個指針;很遺憾,在失去其內(nèi)涵的同時,它還失去了其常量特性,可以作自增、自減等操作,可以被修改。
例如:
void arrayTest(char str[])
{
cout << sizeof(str) << endl; //輸出指針長度
str++; //編譯正確
}
int main(int argc, char* argv[])
{
char str1[10] = "I Love U";
arrayTest(str1);
return 0;
}
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請
點擊舉報。