終於狠下心來深入學習c語言,之前學了一些皮毛,今天就先複習了一下之前學到的東西,順便做個總結。
c語言預處理命令:預處理命令並非c
語言的一部分,但它可以引導
c編譯器做一些額外的工作。巨集定義在習慣上均以大寫表示。
ansi c的預處理命令有下面這些:
#define 巨集定義
例:#define true 1 //
使true和1
具有相同意義。
#define add(a,b) a+b //該巨集返回兩數之和。
#error 使編譯器停止編譯,在除錯時使用
#include 檔案包含指令,常見的標頭檔案包含
#if……
#elif
……#else
……#endif
條件判斷指令,用法與其他
if……
else
一致。
#ifdef 巨集名……
#endif
如果定義了指定的巨集,則向下執行
#ifndef 巨集名……
#endif
如果指定的巨集未定義,則向下執行
#undef 巨集名 取消指定的巨集定義
#line 指定當前行號
#pragma 未理解
二維陣列:c語言支援多維陣列,其中二維陣列是多維陣列中最簡單的一種。
公式:char strs[m][4] = ;
其中,m
為行數,
4為列數。
為了便於理解,我們可以二維陣列像下面這樣:
乙個m行
n列的**:
"a""b""c"
"d""1"
"2""3"
"4"……(m
) 像這樣的**,我們可以通過橫豎座標來訪為指定的資料。
指標:指標是c
的靈魂,個人認為其概念還是比較容易掌握,但在實際程式設計時,繞來繞去還是稍顯迷糊。
首先,指標是乙個變數,它需要占用記憶體空間,但該變數儲存的並非普通的值,而是乙個位址。
int a=0;
int b=1;
int *pa = &a;
int *pb = &b;
可以看到,我們定義了四個變數,分別是整型的a和b
,以及指向整型變數的指標pa和
pb。變數pa和pb
中分別儲存了乙個值,該值為變數a和
b在記憶體中的位址(
&為取位址運算子)。
假設a10000,b
的位址為
10004
。我們來分別看一下這四個變數的值:
a=0;
b=1;
pa=10000;
pb=10004;
printf("%d",&a); //輸出0
printf("%d",pa); //輸出0
&a與
pa均表示變數
a的位址,因此輸出的都是變數
a的值。那麼,「操作其值指向的記憶體空間的值」是什麼意思呢?
像這樣:b=*pa; //
與b=a;
是等價的(我們用"*"
運算子,獲取指標指向的記憶體位址的值。)
那麼:*pa = 10; //
與a=10
是等價的,我們操作的是其值指向的記憶體的值
再如:pa = 10008; //
此時,pa
儲存的將不再是變數
a的位址,我們手動將
pa的值改變了,這時,我們操作的是指標本身的值。
今天覆習了這些重要的東西,其他比較淺顯的省略了,比較深入的後面再來。
2011/07/24 傍晚 悶熱
C語言基礎複習1
不改變其他位的值的狀況下,對某幾個位進行設值。這個場景微控制器開發中經常使用,方法就是先對需要設定的位用 操作符進行清零操作,然 後用 操作符設值。比如我要改變 gpioa odr 的狀態,可以先對暫存器的值進行 清零操作 gpioa odr 0xff0f 將第 4 7 位清 0 然後再與需要設定的...
C語言 基礎複習 標頭檔案
一 c語言環境 優點 量小 執行速度快 功能強大 程式設計自由 缺點 寫 實現周期長 可移植性較差 過於自由,經驗不足容易出錯 對平台庫依賴多 auto自動的,定義區域性變數 break 跳出迴圈或在switch中結束某結構 case 分支選擇 char 字元型 const 定義常量 continu...
C語言基礎知識複習
整型常量有3種表示方式 十進位制整數。例如,123 456 0。八進位制整數。以0開頭的整數是八進位制數。例如,0123表示8進製數123,等於十進位制數83。十六進製制整數。以0x或0x開頭的整數是十六進製制數。例如,0x123或0xl23表示十六進製制數123,等於十進位制數291。如果在整型常...