(一)看了半天,覺得最有價值的地方莫過於是資料的儲存和字元型別和指標之間的混沌關係
#資料儲存:
1.1棧區:編譯器在需要的時候分配,不需要的時候**(一般變數的生命週期到外面的"}"為止),它的記憶體空間相對於堆來說,要小很多(比如申請int a[10000000000000],編譯器就會報錯),但是好在執行效率高,因為malloc/new都是要通過複雜的演算法才可以申請到空間,花費了一定的時間,更不用說還有delete/free了
1.2堆區:堆並不是一無是處,相反,它擁有較大的記憶體空間,相對棧來說可以儲存大量資料
1.3全域性區,靜態區:全域性變數和靜態區域性變數都放在這裡,帶到程式結束時,一同釋放
1.4常量儲存區:顧名思義,這裡儲存不允許修改的常量,資料,字串,指標等等,程式結束時釋放
1.5程式**區存放二進位制函式**
#char和字串(常量)之間~~「難以理解♂」~~ 的關係
char和char之間的區別,超過你的想象
前者是定義乙個char的指標你比如:
char
* a=
"hello world";a[
0]='h'
就會報錯,提示為:不可以被written,因為char* a只是個指標,他不知道這個長度有多大,但是如果這樣寫:
char a=
"hello world";a[
0]="h"
就沒有任何問題,這是常規操作
如果這樣寫:
char a=
"hello world"
;char
*a=a;a[0
]="h"//知道了大小後,訪問就不存在問題了,編譯通過
char
*s =
(char*)
malloc
(n);
//其中n為要開闢空間的大小
char s[n]
;
這兩句話等價,當然可以通過s[i]="*"之類的操作了
include
intmain
(int argc,
char
* ar**)
分別輸出:
size of buf1:4
size of buf2:15
解釋:buf1只是乙個指標,我們知道任何乙個指標都是4個位元組,而buf2包含了15個位元組(你數數就造了qvq)
終於寫完第一節了,紅紅火火恍恍惚惚
(二)作用域,作用域分為:檔案作用域,函式作用域,**塊作用域和原型作用域,識別符號宣告的位置決定它的作用域
1.**塊作用域:任意一對』{}'之間的所有語句叫做**塊
int a,b,c;
}
int a;
//1/*2*/
intb
(int c)
;//3
/*4*/
intd
(int e)
//5}
比如宣告1和2,還有4,至於include<***>的話,就好像他們把另乙個檔案放在了這裡一樣,裡邊的全域性函式,全域性變數和這裡的全域性函式全域性變數具有相同地位
3.原型作用域:宣告3和宣告8,取名字無所謂,關鍵在於定義函式時的名稱,宣告時倒是無所謂的
4.函式作用域:乙個函式中所有語句標籤必須唯一(不要用goto語句,寫大型程式時,別人看了想打人)
**(三)**鏈結屬性
internal:內部(static)
static 用來修改鏈結屬性為extern的宣告語句,比如:
int b;
//1intc(
int d)
//2
為了不為其他的cpp檔案訪問,只在本編譯單元內訪問,才加上static關鍵字.
當在**塊內部變數宣告時,加上static時,從自動變數修改為靜態變數,但是變數的鏈結屬性和作用域不變
external:外部
較複雜,在第一次宣告的地方加上extern,可以讓別人更好的知道你的意圖
注意:
static
int i;
//1int
func()
//2處的extern不能影響第一次的static宣告,換句話說//2處的extern無效!
none:無
****(四)結語
這些東西雖然有點難以理解,但是也沒有演算法題那麼難以理解,它更像是學習生活中的調味品,在吃慣了苦澀的演算法題後,換個口味,來些稍微輕鬆點的小知識,為自己以後的路打下堅實的基礎
《C和指標》第三章 資料
1.c語言中有四種基本資料型別 整形 浮點型 指標和聚合型別 陣列 結構等 2.整型家族包括字元型 至少8位 短整型 至少16位 整型 至少16位 和長整型 至少32位 她們都有有符號和無符號兩種版本。3.列舉型別就是指她的值為符號常量而不是字面值型別,而符號名實際值都是整型值。如果某個符號沒有顯示...
C和指標閱讀(第三章)
如果下標值是從那些已知是正確的值計算得來,那麼就無需檢查它的值。如果用作下標的值是根據某個方法從使用者輸入的資料產生而來的,那麼在使用它之前必須進行檢測,確保它們位於有效的範圍之內。在宣告指標變數時,可以為它指定初始值。個人感覺初始化賦值null即可 char message hello world...
C與指標筆記第三章
第一節 基本資料型別 c語言僅有四種基本資料型別 1.整型 2.浮點型 3.指標型別 4.聚合型別 一.整型 九種 1.字元 char signed char unsigned chars 2.短整型 signed short int unsigned short int 3.整型 signed i...