|
標(biāo) 發(fā)信站: [數(shù)組和指針的分配] 數(shù)組是開辟一塊連續(xù)的內(nèi)存空間,數(shù)組本身的標(biāo)示符代表整個數(shù)組,可以用sizeof取得真 實的大小 指針則是只分配一個指針大小的內(nèi)存,并可把它的值指向某個有效的內(nèi)存空間 [空間的分配] [全局的和靜態(tài)的] char 一個指針,指向只讀數(shù)據(jù)塊(section)里的 "hello ",可被編譯器放入字符串池(也就是說, 你在寫一個char char 一個數(shù)組,分配在可寫數(shù)據(jù)塊(section),不會被放到字符串池中 [局部] char 一個指針,指向只讀數(shù)據(jù)塊(section)里的 "hello ",可被編譯器放入字符串池(也就是說, 你在寫一個char 是說,指針是局部變量,他指向的數(shù)據(jù)卻是全局的. char 一個數(shù)組,分配在堆棧上,初始化由編譯器進行(短的話直接用指令填充,長的就從全局字 符串表拷貝),不會被放到字符串池中(但是卻可能從字符串池中拷貝過來),也不應(yīng)該返回 它的地址. [代碼中的字面字符串] printf( "%s\n ", "hello "); 這兩個字面常量( "%s\n "和 "hello "),都在只讀數(shù)據(jù)塊里 [用途] 1.全局指針 用于不需要修改內(nèi)容,卻可能會修改指針的情況(當(dāng)然,不修改也沒人反對) 2.全局?jǐn)?shù)組,用于不需要修改地址,卻需要修改內(nèi)容的場合 3.既需要修改指針,有需要修改內(nèi)容怎么辦呢?定義一個數(shù)組,在定義一個指針指向它就可 以了 4.函數(shù)中如果不需要修改字符串的內(nèi)容,應(yīng)該盡量用char*p= "xxx "這種寫法.初始化的局 部字符數(shù)組影響效率,一般應(yīng)該盡量避開(應(yīng)該使用的情況下則不要猶豫) 以上說的是VC6的情況, |
|
|