怎么給指針數(shù)組分配空間大小 array參數(shù)的要求?
array參數(shù)的要求?數(shù)組名的本質(zhì)是地址,也就是指針。如果數(shù)組名要作為形參使用,必須寫成(int array[])或者(int * array)的形式。C string內(nèi)存的分配C 如何給stri
array參數(shù)的要求?
數(shù)組名的本質(zhì)是地址,也就是指針。如果數(shù)組名要作為形參使用,必須寫成(int array[])或者(int * array)的形式。
C string內(nèi)存的分配C 如何給string分配內(nèi)存的?
Sizeof是求一個數(shù)據(jù)類型或者基本數(shù)組的內(nèi)存大小。
字符串類型本身是字符數(shù)組的封裝。
所以string類型的變量實際上是一個字符指針,它一般指向字符串的第一個地址。
但是,任何類型的指針變量在通用計算機中都要占用4個字節(jié)的內(nèi)存,也就是整數(shù)。
而string*相當于聲明了一個字符型的double指針,還是指針,當然還是4字節(jié)。
所以你的*s相當于一個雙指針,或者說占用了4個字節(jié)的內(nèi)存。
Sizeof和len在字符串處理上是不同的。
比如我自己的經(jīng)歷:
char a[5];sizeof(a)的結(jié)果是5,因為它是一個基本數(shù)組。
char * sasiz
指針數(shù)組?
如果指針數(shù)組* str[5] { "jjjjj ", "kkhjfg ", "jkjgh ", "kjjjk "和 "llljg "}被使用,為什么這里的str[i]代表每個字符串,為什么可以作為函數(shù)參數(shù)?望指教!
可以調(diào)試一下看看:
命名變量str指向內(nèi)存地址,該地址是指針數(shù)據(jù)的第一個地址;
str[0]的值是數(shù)組中第一個字符串的第一個地址;
str[1]的值是數(shù)組中第二個字符串的第一個地址;
您可以通過調(diào)試來查看這些命名變量的地址。
不看內(nèi)存地址怎么理解指針?
指針的本質(zhì)是一個地址的解釋!
Char*編譯器將A指向的地址解釋為字符。
假設A指向內(nèi)存地址0x0001,地址0x0001存儲0x61 0x62 0x63。編譯器如何解釋*a?
編譯器會看到a的類型是char,也就是只看這個地址的1個字節(jié),所以編譯器解釋* a a.
指針類型是告訴編譯器如何解釋指針變量值所指向的地址。