Posts

Showing posts with the label C

C/C++觀念整理

整理最近看到的,一些C/C++觀念性文章: C/C++哪些地方會用到pointer呢?  pointer和reference有什么差别呢?  Union; Just Different Perspective! (觀點不同罷了!) 其他相關文章: 什麼是 Function Pointer ? extern 與 extern "C" keep walking !

MinGW 與 Cygwin 的不同處

Image
MinGW 可以唸做 Min-G-W「明~碁~大不了~」 或是MinG-W「名~大不了~」, 也有人唸做 ming-wee「名貴(台語發音)」 或是 min gnu 「明~格奴」。 可參考 http://en.wikipedia.org/wiki/MinGW MinGW 原來是 Cygwin (念做「賽葛-wing」)裡 GNU 開發工具的一個分支,沒 Cygwin 複雜,而且目的也與 Cygwin 不同。 Cygwin 的目的是希望透過一個 dll (就是 Cygwin1.dll 通常被安裝在 C:\Windows\system32底下) 建立一個系統呼叫轉換層,將原先 unix 世界裡的 system call 呼叫,經由這個 DLL 把它們映對到微軟視窗作業系統的系統呼叫,如此一來就可以很方便在 Windows 底下模擬出一個 unix 平台來,這樣你不需要一個 unix 機器照樣也可以開發 unix 程式。 開發好的程式只要拿到 UNIX 平台上就可以使用。同理原來UNIX上諸多 Open source 程式也可以粉方便拿到 Windows 世界來享用, 當然啦!UNIX system calls 與 Windows APIs 不盡然可以一對一對應,Cygwin 的目標在於儘可能 Compatible,執行績效倒不是重點考量。

什麼是 Function Pointer ?

Image
函式指標變數(Function Pointer)就是可以存放函式起始位址的變數。 使用方式: double (*fp)(double); ... fp = square; ... (*fp)(x); // 呼叫 square() 函式 以下轉載自 C程式語言教學 C語言允許陣列指標和函數三者混合宣告,以表達複雜的資料結構。對於要撰寫比較複雜的應用程式來說,了解這三者的關係是非常必要的。例如下面的變數x到底是甚麼? char (*x[])(); 要看懂這些東西,首先要查型別與運算裡有關優先權與結合序的表格,得到()[]是第一優先權左結合,而*是第二優先權右結合。在看變數宣告時,如同運算式的推演過程,必須遵守C程式語言對*()[]的優先權定義。接下來請讀者背誦下面的口訣 * 看見[]就說array[] of * 看見*就說pointer to * 看見變數後面的()就說function() returning 上述口訣配合*()[]的優先權,依序找出其執行的順序,每看到運算符號就把這幾句口訣念出來。因此變數的意義如下面範例 char *x; // x: a pointer to char char x[3]; // x: an array[3] of char char x(); // x: a function() returning char char *x[3]; // x: an array[3] of pointer to char char (*x)[3]; // x: a pointer to array[3] of char char **x; // x: a pointer to pointer to char char *x(); // x: a function() returning pointer to char char *x()[3]; // x: a function() returning array[3] of pointer to char char (*x[])(); // x: an array[] of pointer to function() returning char char (...

簡介C的資料型態

C has really only four types of variables: 1. char 2. int 3. float 4. double Keyword Variable Type Range char Character (or string) -128 to 127 (1 byte) int Integer -32,768 to 32,767 (4 byte) short Short integer -32,768 to 32,767 (4 byte) short int Short integer -32,768 to 32,767 (4 byte) long Long integer -2,147,483,648 to 2,147,483,647 unsigned char Unsigned character 0 to 255 unsigned int Unsigned integer 0 to 65,535 unsigned short Unsigned short integer 0 to 65,535 unsigned long Unsigned long integer 0 to 4,294,967,295 float Single-precision +/-3.4E10^38 to +/-3.4E10^38 floating-point (accurate to 7 digits) double Double-precision +/-1.7E10^308 to +/-1.7E10^308 floating-point (accurate to 15 digits) -- Pointer is the address in thememory...

extern 與 extern "C"

Image
整理一下看網友blog的文章筆記: 關於 extern : 1. 在function外定義的變數就叫外部變數,相反的在function內就叫內部變數。 2. 外部變數的視野是從定義的開始那行到本身檔案結束的最後一行(此稱自然視野)。 3. 若外在變數要被其他的檔案所用,那就要在別的檔案那裡宣告extern,以表它定義在別的檔上(此稱視野擴展)。 1. extern的用法 想用外部變數的時候,在變數前面前面加extern。 2. C++ extern 全域變數正確用法 提到應該在.h檔內宣告變數為全域變數, extern int i; 但是還要在cpp檔中重新定義一次。 int i; 要注意的是一定要配合.h檔,在相同名稱的.cpp內重新定義,不然會出現linker error。 也可以這樣用, -- 關於 extern "C" {} extern "C"的用法 c 語言static與extern的用法

好用的sprintf

sprintf - C++ Reference 但今天要介紹的是 g_sprintf 以及 g_strdup_printf g_sprintf () gint g_sprintf (gchar *string, gchar const *format, ...); An implementation of the standard sprintf() function which supports positional parameters, as specified in the Single Unix Specification. g_strdup_printf () gchar* g_strdup_printf (const gchar *format ...); Similar to the standard C sprintf() function but safer, since it calculates the maximum space required and allocates memory to hold the result. The returned string should be freed when no longer needed.

如何用GCC編譯UTF8檔能正確顯示中文

Image
From Something about Chinese 如何用GCC編譯UTF8檔能正確顯示中文 http://blog.xuite.net/hsuyucheng/Knight/14446557 但是 @@ gcc -c -Wall -fexec-charset=UTF8 -shared -fPIC -I../include -o c.o gcc: no input files make: *** [c.o] Error 1 囧 ~ 有空應該要多研究 gcc 使用手冊 ~ 畢竟自己找網路資源 跟實際使用狀況還是有落差 @@

方便好用的makefile ~

Image
makefile也是個很神奇的東西阿 先看一下 官方介紹 GNU `make' http://www.gnu.org/software/make/manual/make.html 再來看一下維基怎麼說 wiki make http://en.wikipedia.org/wiki/Make_%28software%29 另外還有一個與gtk相關的makefile指導 http://bo.majewski.name/bluear/gnu/GTK/plain/index.htm 真的有很多東西要學阿 !

常用gcc指令說明

Image
常用gcc(GNU Compiler Collection)指令說明 設定編譯出的 object 檔檔名或是可執行檔檔名-o 參數: -o out_put_filename 在編譯過程做最佳化-O 參數: -O 設定搜尋標頭檔目錄-I 參數: -Idir_name 設定搜尋程式庫目錄-L 參數: -Ldir_name 設定程式庫檔案-l 參數: -lname 提供進一步的資訊 以便使用者找尋程式中的錯誤-Wall 參數: -Wall 在編譯出可執行檔時,附加執行時除錯資訊, 以供 gdb 讀取 (若要使用 ABSoft 的除錯程式,則須將參數改為 -gdwarf )-g 參數: -g 更多的說明 man gcc info gcc 參考資料 wiki GCC http://en.wikipedia.org/wiki/GNU_Compiler_Collection

用Eclipse寫C

Image
Eclipse除了可以開發Java之外,還支援了許多語言,當然絕不會漏了 C/C++, 以下說明要使用 Eclipse 開發C/C++程式最主要的幾個步驟: 1. 安裝 JRE 由於 Eclipse 本身是用 Java 開發而成,因此自然需要使用到 JRE, 如果先前已經安裝過了就可以不必安裝了。 2. 安裝 Eclipse 請上官方網站下載 Eclipse 3. 掛上 CDT CDT是使Eclipse能開發C/C++程式的外掛套件 4.安裝 MinGW 讓你的電腦上有GCC, G++編譯器, 其他Eclipse 相關文章: set Android error log on Eclipse linux(ubuntu)環境下開發 Android 所遇到的Eclipse 設定問題 Android tutorial : Before HelloWorld

C 語言新手十誡

轉錄自 ptt 作者: khoguan (Khoguan Phuann) 看板: C_and_CPP 標題: C 語言新手十誡(增修一版) 時間: Sat Sep 3 01:07:31 2005 C 語言新手十誡(The Ten Commandments for Newbie C Programmers) by Khoguan Phuann 請注意: (1) 本篇旨在提醒新手,避免初學常犯的錯誤(其實老手也常犯:-Q)。 但不能取代完整的學習,請自己好好研讀一兩本 C 語言的好書, 並多多實作練習。 (2) 強烈建議新手先看過此文再發問,你的問題極可能此文已經提出並 解答了。 (3) 以下所舉的錯誤例子如果在你的電腦上印出和正確例子相同的結果, 那只是不足為恃的一時僥倖。 (4) 不守十誡者,輕則執行結果的輸出數據錯誤,或是程式當掉,重則 引爆核彈、毀滅地球(如果你的 C 程式是用來控制核彈發射器的話)。 一、你不可以使用尚未給予適當初值的變數。 錯誤例子: int accumulate(int max) /* 從 1 累加到 max,傳回結果 */ { int sum; /* 未給予初值的區域變數,其內容值是垃圾 */ int num; for (num = 1; num <= max; num++) { sum += num; } return sum; } 正確例子: int accumulate(int max) { int sum = 0; /* 正確的賦予適當的初值 */ int num; for (num = 1; num <= max; num++) { sum += num; } return sum; } 二、你不可以存取超過陣列既定範圍的空間。 錯誤例子: int str[5]; int i; for (i = 0; i <= 5; i++) str[i] = i; 正確例子: int str[5]; int i; for (i = 0; i < 5; i++) str[i] = i; 說明:宣告陣列時,所給的陣列元素個數值如果是 N, 那麼我們在後面 透過 [索引值] 存取其元素時,所能使用的索引值範圍是從 0 到 N-1, 也就是 C 和 C++ 的陣列元素是從第 0 個開始算起,最後一個...

搜尋

Agoda

熱門文章

[社會觀察] 一生順遂與命途乖舛

新鮮人找工作:職場名詞解釋 AE FAE Pre-sales Post-sales

日本旅行 去東京可以在哪邊買羽球相關用品?WEMBLEY/WINDSOR/梭家/Victoria/Alpen TOKYO/

中華民國2024 總統、副總統選舉公告發布 連署參選門檻28萬9667人 可以推薦候選人的政黨包括民進黨、國民黨、民眾黨和時力

什麼是 OTA ?

[FAANG面試] 如何準備Google Technical Program Manager (TPM) 面試

[HMD Global] Nokia 2020 新手機發布 首款 5G 手機 Nokia 8.3 預計夏季開賣 !

關於中國:202X年

[表特][Passion Sisters] 中信兄弟PS女孩 浮誇甜心 凱蒂 炸裂全場~ 小許瑋甯

[音樂] 霖霖 新單曲:給你了