tft每日頭條

 > 圖文

 > c語言的基本知識

c語言的基本知識

圖文 更新时间:2024-12-20 20:20:54

c語言的基本知識?1,“\”引起的錯誤:在我們現在的編譯器中如果寫下面這段程序,下面我們就來聊聊關于c語言的基本知識?接下來我們就一起去了解一下吧!

c語言的基本知識(C語言之C語言基礎知識)1

c語言的基本知識

1,“\”引起的錯誤:

在我們現在的編譯器中如果寫下面這段程序

int main() { // create file in c:\ ofstream outupt("test.txt"); }

編譯就會用字符的顔色來提示我們,這兩行内容都被當做了注釋的内容,但是如果在vim下編寫程序,就不會出現代碼顔色不一樣的問題,導緻程序出錯,是什麼原因呢,是因為"\"的問題,它在c 或者python語言中,代表的含義都是本行尚未結束,下一行仍和本行是一個整體,所以編譯器會認為,兩行都是注釋,最終導緻錯誤。

2, 想想這個表達式: y = x/*p 他的結果是什麼呢? 有可能是x的值除以*p的值的結果賦給y,但是在實際編譯中會出錯,為什麼? 因為編譯器會把 /*當成注釋的開始,之後的内容都是注釋,但是要結束注釋需要找到匹配的*/,但是沒有找到,所以編譯會出錯。如果向改正程序的話,在/, * 之間加一個空格,或者給他們加一個(),就解決了。

3, #define PCHAR char*

PCHAR p1, p2;

typedef char* pchar;

pchar p3, p4;

那sizeof p1, p2, p3, p4都是什麼呢,結果是4, 1, 4, 4,結果很奇怪吧,原因要追溯到編譯器對#define的處理,是對#define定義的東西在預編譯的時候進行替換,也就是說真正編譯的時候是這個樣子 char * p1, p2;這樣該明白p2的值是1的原因了吧。

4,enum enum_value {

VALUE_ONE,

VALUE_TWO,

VALUE_THREE,

}enum_val;

測試一下sizeof enum_val的值,看是多少,你會發現是4,其實這個原因很簡單,enum 定義的變量隻是一個UINT類型,而它生命的VALUE_ONE,VALUE_TWO, 隻是enum變量的取值範圍而已,所以enum不是像struct那樣是個結構體,它表示的隻是一個集合。

5, #define,因為在預編譯的時候就會做替換,所以他不會導緻不必要的内存分配。同時宏看起來像一個函數,但不會招緻函數調用不必要的開銷。

在定義宏的時候,必須記住為所以得實參加上小括号,但即使加上了小括号,也會遭遇麻煩:

#define CALL_WITH_MAX(a, b) f((a) > (b) ? (a) : (b))

看看下面的調用:

int a = 5, b = 10

CALL_WITH_MAX( a, b)

CALL_WITH_MAX( a, b 10) 把實參替換一下就可以看到,a的遞增次數取決于它被拿來和誰比較。

6, int a[6], sizeof(a[6]) 為什麼不會出錯? 因為sizeof 是一個關鍵字,關鍵字求值是在編譯的時候,雖然并不存在a[100]這個元素,但是這裡并沒有真正的去訪問a[6], 而是僅僅根據數據元素的類型确定其值。 那麼函數引用a[6]就會出錯,是因為函數求值是在運行的時候。

獲取方式:

1.在你手機的右上角有【關注】選項,或點擊我的頭像,點擊關注!(關注我)

2.關注後,手機客戶端點擊我的主頁面,右上角有私信,請私信發我:編程

電腦已經設置好了關鍵詞自動回複,自動領取就好了!這幾天上萬個消息,真的回複不過來,所以回複的時候請注意關鍵詞!

其實做為一個開發者,有一個學習的氛圍跟一個交流圈子特别重要這裡請私信我“編程”不管你是小白還是大牛歡迎入住大家一起交流成長。小編會在裡面不定期分享幹貨源碼,包括我精心整理的一份c 零基礎教程。歡迎各位感興趣的的小夥伴。

學習思路:

學習資料:

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved