進入C語言都有一道門檻,第一個最基本的是指標,之後還有二維陣列、指標陣列,學著學著又發現紥根基的工作不能少...
以下正轉載來的,轉自Edison.X. Blog,寫的相當不錯。
怎麼學c語言、怎麼挑書、要挑什麼書",這個問題聽過蠻多遍了,提供自己學習 C/C++ 的歷程讓各位參考。以下的說明都是以個人主觀的立場,當然我不是什麼大師,這些都參考就好。由於當初筆者接觸時,就是 C ,若想學其它像是 VB, JAVA, C# 等程式語言,這篇文章仍可給予一些幫助與參考。
進入C語言都有一道門檻,第一個最基本的是指標,之後還有二維陣列、指標陣列,學著學著又發現紥根基的工作不能少...
以下正轉載來的,轉自Edison.X. Blog,寫的相當不錯。
怎麼學c語言、怎麼挑書、要挑什麼書",這個問題聽過蠻多遍了,提供自己學習 C/C++ 的歷程讓各位參考。以下的說明都是以個人主觀的立場,當然我不是什麼大師,這些都參考就好。由於當初筆者接觸時,就是 C ,若想學其它像是 VB, JAVA, C# 等程式語言,這篇文章仍可給予一些幫助與參考。
Q1:Compile的時候,明明有定義某個data type, compiler確一直不認得。
A:Clean all 再重新compile。
1. struct的巨大作用
面對一個人的大型C/C++程式時,只看其對struct的使用情況我們就可以對其編寫者的編程經驗進行評估。因為一個大型的C/C++程式,勢必要涉及一些(甚至大量)進行資料組合的結構體,這些結構體可以將原本意義屬於一個整體的資料組合在一起。從某種程度上來說,會不會用struct,怎樣用struct是區別一個開發人員是否具備豐富開發經歷的標誌。
根本沒有什麽文件結束符。 如果有的話空文件不是還要占一個字節的結束符? EOF是什麽?它就是-1。它不過是C例程裏的一個常量,當碰到文件結尾時,就返回-1。 問題的根本是你錯誤的認為磁盤的文件結尾還有一個字符專門表示文件的結束,呵呵,沒有這個字符,你想啊,每讀一個字符還要比較一下它是否等于“空想的文件結束符“,是不是太低效了點呢。那是如何判斷文件是否已經結束的?中斷、異常。
規則是以structure裡最佔記憶体空間的資料型態為單位,比如int佔 4 bytes,當不滿 4 bytes 時,遇到另一種型態就把記憶体填滿至 4 bytes,從下一個 4 bytes 開始放下一個變數。
#include <iostream>
typedef void (*function_TYP)(void);
static function_TYP virtual_function_name=0;
C/C++ 的 Header file 不適合在裡面宣告實體物件的。因為做為一個 header file 可能會有很多程式檔含入(include)該Header file。如果你宣告了一個物件在裡面,編譯器會給你一個難堪的"重覆定義"的錯誤訊息。
通常的做法是,你應宣告全域物件在各自所屬的程式檔中,而其它要用到該物件的程式則宣告該全域物件為 external 即可。
指针的分类
(1)近指针(near):
近指针为16位指针,它只含有地址的偏移量部分。近指针用于不超过64K 字节的单个数据段或代码段。在微、小和中编译模式下产生的数据指针是近指针(缺省状态);在微、小和中编译模式下产生的码指针(指向函数的指针)是近指针(缺省状态)。
sprintf和snprintf都是以\0結尾,在轉換字串時要注意,遇到0就會被視為結束,造成轉換不完全。
宣告型態時,用C的標準定義,compiler比較精確,若用自定型態,如
Q:When create a task, what does the stack size mean?
A:Stack size of a task means any function which of the task can't bigger than the stack szie.
1、argc 與 argv為C語言的關鍵字,是專門用在命令列的參數名。
2、argc是argument count(參數總和)的縮寫,代表包括指令本身的參數個數。
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和 C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。
其格式一般为: #Pragma Para
其中Para 为参数,下面来看一些常用的参数。