C語言基本概念 一

2021-08-09 09:22:55 字數 1764 閱讀 7698

1. define與typedef的區別

(1) #define是巨集命令,如同文字編輯的替代命令,在編譯前把程式中的所有遇到的詞全部替代後再由編譯器編譯

eg: #define uchar unsigned char

(2)typedef本身是一種儲存類的關鍵字,為複雜的宣告定義簡單的別名。

eg:  typedefunsigned char uchar;

(3)關於二者區別的乙個例子:

#defien int_ptr int *

int_ptr a,b;   //相當於int *a,b; 只是簡單的巨集替換,其中a是乙個整型的指標變數,b是

乙個整型數值變數

typedef int * int_ptr;

int_ptr a,b;  //a,b都為指向int的指標,typedef為int *引入乙個新的助記符

2. 定義指標時*應該跟著前面的型別還是後面的變數

最好是跟著後面的變數,雖然int*p,int * p, int *p對編譯器來說其實是一樣的。

int *a, b; 這樣可以輕鬆地知道a是指標,b是值;

int*  a, b; 看上去像a和b都是指標,但其實不是 。

3. *與&的區別

#include

using namespace std;

int main()

輸出結果為:

a=5&a= 0026f9ec

*p=5

p=0026f9ec

&p=0026f9f0   //儲存指標p的位址。0026f9f0比0026f9ec大4個位元組,剛好儲存指標p的32位位址

4.const int *p 與 int * const p 的區別

(1)  const int *p;//const修飾的是數值*p,故*p是常量不能改變,但可以改變指標p的指向:

eg1.1:  int b=1,c=2;                                     

const int *a=&b;

*a=10; //本句錯誤

cout<<*a<

這個例子編譯時會報錯,提示"a":不能給常量幅值。

eg1.2: int b=1,c=2;

const int *a=&b;

cout<<*a<

這個例子能輸出結果 1 2

(2)  int * const p;  //const修飾的是指標p,因此p的指向是常量不能改變,但*p可以改變

eg:2.1: int b=1,c=2;

int *const a=&b;

a=&c; //本句錯誤,已經在上一句給常量指標a賦值為&b

cout<<*a<

這個例子編譯時會報錯,提示"a":不能給常量幅值。

eg:2.2 int b=1,c=2;

int *const a=&b;

*a=10;

cout<<*a《這個例子能輸出結果10。因為指標a在初始化中指向了int 變數b,故*a=10實際上也改變了b的值,cout<

5. *_t變數中t的意義

_t是乙個結構的標註,可以理解為type或typedef的縮寫,表示它是typedef定義的

C語言 基本概念

c語言的基本概念 1.格式 型別修飾符 變數名初始值.2.定義變數規則 1 不能以數字開頭.2 由下劃線,字母,美元符,數字組成.3 變數名不能重複.4 不要以拼音命名,特別是拼音簡寫.5 駝峰結構 駝峰命名法.6 不能與系統保留字重名.3.編寫 規範 操作符兩個由空格,逗號後面乙個空格.練習1 定...

C語言基本概念

bit 中文名稱是位,音譯 位元 是用以描述電腦資料量的最小單位。二進位制數系統中,每個0或 1就是乙個位 bit bit縮寫為b。位元組 byte 是計算機 資訊科技 用於計量儲存容量和傳輸容量的一種計量單位,乙個位元組等於8位 二進位制數 byte 縮寫為b 1kb 1024 bytes 102...

C 語言基本概念

類 具有同種屬性的物件稱為類,是個抽象的概念。比如說 汽車 人 狗 神 物件 日常生活中的所有東西都是物件,是類的例項化。比如說 推土車是汽車的例項化 姚明是人的例項化 小白 狗的名字 是狗的例項化 二郎神是神的例項化 屬性 用來描述具體某個物件的特徵的是屬性,是靜態的。比如 姚明身高2.6公尺多 ...