c語言深入理解(四)

2021-09-24 21:43:31 字數 940 閱讀 5547

1、y=x/*p實際上編譯器把/*當作一段注釋的開始,把/後面的內容當作注釋內容,知道出現/位置,由於沒找到所以會提示出錯。

可以把上面的表示式修改一下:y=x/ *p加乙個空格 表示x除以p指向記憶體的值,後者y=x/(p).也就是說只要斜槓(/)和星號()之間沒有空格都會把它當作注釋的開始。

2.c語言裡反斜槓(\)表示斷行,編譯器會將反斜槓剔除掉,跟在反斜槓後面的字元會自動接續到前一行,但要注意反斜槓之後不要有空格,反斜槓的下一行之前也不能有空格。反斜槓除了可以用作續接符,還能被用作轉義符的開始標識。

3.單引號和雙引號:我們知道雙引號引起來的都是字串常量,單引號引起來的都是字元常量,字元常量在記憶體中佔乙個位元組,字串常量在記憶體中佔兩個位元組。

如 1,『1』,「1」三者的意義完全不一樣,所佔記憶體也不一樣,乙個整形常數,32 位系統佔4個位元組,乙個字元常量,佔乙個位元組,乙個字串常量佔兩個位元組(包括乙個結束字元)。字元在記憶體裡是以ascaii碼儲存的,所以字元常量可以與整形常量或變數進行計算。

形式上: 字元常量是單引號引起的乙個字元;

字串常量是雙引號引起的若干個字元;

含義上: 字元常量相當於乙個整型值,可以參加表示式的運算;

字串常量代表乙個位址值(該字串在記憶體中存放的位置);

佔記憶體大小:字元常量只佔乙個位元組;

字串常量佔若干個位元組,(至少乙個字元結束標誌)

4.ox01<<2+3結果為七嗎?不對,結果為32,因為+號的優先順序比移位的優先順序高,此外左移和右移的位數不能大於資料的長度,不能小於0.

5.關於i++的計算。k=(i++)+(i++)+(i++);

6.const修飾的是唯讀變數而不是常量,不能用來作為定義陣列的維數,也不能放在case後面。

7.一些易混的優先順序表示式。

深入理解C語言 深入理解記憶體四區

當陣列做函式引數的時候,會退化為乙個指標 此時在函式內是得不到陣列大小的 因此,陣列做函式引數的時候需要傳遞陣列大小,也就是多傳遞乙個引數 void func int arr,int num 若存在以上函式,c c 編譯器在編譯的時候,會將陣列優化為乙個指標,指向陣列的首位址,因此無法通過sizeo...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...