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公尺多 ...