c語言的學習

2022-04-10 09:20:29 字數 1976 閱讀 6084

1. 乙個"good news!/0" 的字串。其中/0表示字串終止, 終止符是編譯時自動加上的, 然後乙個字元乙個字元地複製到s所指的記憶體區域。因此定義字串陣列時, 其元素個數至少應該比字串的長度多1。

2. 預處理運算子# #為巨集擴充套件提供了一種連線實際變元的手段。如果替換文字中的引數用 # #相

連,那麼引數就被實際變元替換, # #與前後的空白符被刪除,並對替換後的結果重新掃瞄。例

如,下面定義的巨集p a s t e用於連線兩個變元:

#define paste( front, back ) front ## back

從而巨集呼叫paste(name, 1)的結果是建立單詞n a m e 1。

摘自 k&r 的c語言 4.11

3. inline 說明這個函式是內聯的,在編譯過程中內聯函式會直接被源**替換,提高執行效率 如果類中的某個函式會被呼叫很多次或者放在迴圈中,那麼建議將這個函式宣告為內聯,可以提高程式的執行效率

typedef char* va_list;

void va_start ( va_list ap, prev_param ); /* ansi version */

type va_arg ( va_list ap, type ); 

void va_end ( va_list ap ); 

va_list 是乙個字元指標,可以理解為指向當前引數的乙個指標,取參必須通過這個指標進行。

在呼叫參數列之前,定義乙個 va_list 型別的變數,(假設va_list 型別變數被定義為ap);

然後應該對ap 進行初始化,讓它指向可變參數列裡面的第乙個引數,這是通過 va_start 來實現的,第乙個引數是 ap 本身,第二個引數是在變參表前面緊挨著的乙個變數,即「...」之前的那個引數;

然後是獲取引數,呼叫va_arg,它的第乙個引數是ap,第二個引數是要獲取的引數的指定型別,然後返回這個指定型別的值,並且把 ap 的位置指向變參表的下乙個變數位置;

獲取所有的引數之後,我們有必要將這個 ap 指標關掉,以免發生危險,方法是呼叫 va_end,他是輸入的引數 ap 置為 null,應該養成獲取完參數列之後關閉指標的習慣。說白了,就是讓我們的程式具有健壯性。通常va_start和va_end是成對出現。

各種標頭檔案的定義:

//serial_struct header file

#include

//termios struct and tcioflush

#include

#include "parse.h"

//for tiocgserial tiocsserial

#include

//for printf function

#include

open函式已經她的引數需要

#include

//for serial_struct async_spd_cust

#include

時常在cpp的**之中看到這樣的**:

#ifdef __cplusplus 

extern "c"  

#endif 

這樣的**到底是什麼意思呢?首先,__cplusplus是cpp中的自定義巨集,那麼定義了這個巨集的話表示這是一段cpp的**,也就是說,上面的**的含義是:如果這是一段cpp的**,那麼加入extern "c"處理其中的**。

要明白為何使用extern "c",還得從cpp中對函式的過載處理開始說起。在c++中,為了支援過載機制,在編譯生成的彙編碼中,要對函式的名字進行一些處理,加入比如函式的返回型別等等.而在c中,只是簡單的函式名字而已,不會加入其他的資訊.也就是說:c++和c對產生的函式名字的處理是不一樣的。

因此,為了在c++**中呼叫用c寫成的庫檔案,就需要用extern "c"來告訴編譯器:這是乙個用c寫成的庫檔案,請用c的方式來鏈結它們。

extern 「c」這個宣告的真實目的是為了實現c++與c及其它語言的混合程式設計

c語言的學習

今天繼續學習了c語言,這兩天講的進度很慢,所以學習的內容都能夠理解。今天主要是講了一下關於進製的知識,進製在以前接觸過,有一點基礎,所以不是很難,然後練習了一些二進位制如何轉成十進位制,如何轉成八進位制,如何轉成十六進製制,這些都是沒有問題的。然後就是c裡面的原碼反碼和補碼的轉換,首先,是有符號的數...

c語言的學習

從大一開始學習c語言程式設計,掌握了c語言的基本語法 進行課程設計,掌握了c語言的應用。大二主要是學習了資料結構和演算法,負責解決複雜的現實問題,需要用到比較複雜的資料結構或是演算法。大三主要學習了計算機網路和作業系統,了解了計算機的網路的從底層到上層的所有知識,到操作 系統,了解了計算機本身設計的...

c語言的學習

gcc o o是output的意思,v是列印詳細資訊 在linux系統中return 0 0代表成功,其他都代表不成功 gcc根據檔名的字尾呼叫不同的翻譯模組,翻譯為機器碼 gcc c 直接由a.c到a.o,不用a.s再到a.o gcc o 包括編譯 鏈結 gcc e 預處理 預處理 處理inclu...