C 語法細微 二 陣列 指標 結構體

2021-05-12 15:40:53 字數 1743 閱讀 2847

/*

//2023年10月25日    2:00

//陣列 指標 結構體 共用體 列舉

陣列:一維: 型別識別符號 陣列名[常量表示式];

int a = ; //合法

int a[5] = ,b[5];

b=a; //非法

二維: 型別識別符號 陣列名[常量表示式1][常量表示式2]

int a[4] = ,{},}; //合法

strcpy(char , const char)//第乙個引數必須是字元陣列

char str1[10];

str1 = "china"; //非法,不能把字串常量賦值給字元陣列名

//2023年10月25日9:30

指標:指標的定義:基型別 *指標變數名;

& 取位址運算子;

* 指標運算子(間接訪問運算子);

(*p++) 就是 (*(p++))

二維陣列與指標:

int a[3][4];

int* p;

p = a[0];//可以

p = a; //不行 型別不一樣 a指向a[0]

定義乙個指向4個整形元素一維陣列的指標:

int (*p)[4];

指向函式的指標:

int (*p)(int,int);

返回整形變數指標的函式:

int *p(int,int);

c語言中 函式的指標多用來做函式形參

double integral(double a, double b, double (*fun)(double));

指標陣列:int *p[4] 四個元素都是指向整形int的指標

陣列指標:指向陣列的指標

int a[10],b[4][10],(*p)[10];

p = &a;

p = b;

p = &b[0];

引用(reference):

int a;

int &b = a;

在宣告的時候必須初始化

指標變數 或者 變數作為形參 都是值傳遞

而引用作為形參 則是 位址傳遞

void swap(&a,&b);

int i,j;

swap(i,j);

結構體:

struct 結構體型別名

;結構體可以互相賦值,比如:

student student1,student2;

student1 = student2;

student *p;

p = &student1;

cout<<(*p).name;

cout<<(*p).num;

student1.name (*p).name p->name 相互等價

動態分配和撤銷記憶體:

new 型別[初值];返回乙個指標。

delete 指標變數;

注意new 和 delete 不是函式

共用體:

union 共用體型別名

;共用體型別名 共用體變數名;

共用體變數每一瞬間只能存放其中一種 而不是幾種;

共用體變數位址和各成員位址一樣;

不能再定義共用體的時候進行初始化 也不能將共用體作為函式引數。

列舉:enum 列舉型別名 ;

列舉元素是常量,預設從0開始計,若有改變,從改變的開始計。

typedef:

typedef int integer;

typedef float real;

陣列指標 結構體指標

指向指標結構體 include include int main struct student stu 1 定義struct student型別的變數stu1 struct student p 定義指向struct student型別資料的指標變數p p stu 1 p指向stu1 stu 1.nu...

結構體指標陣列

struct h a 100 b,c 3 d a是乙個結構體陣列,已經有100個節點了。不需要再分配空間了。b是乙個結構體變數,也已經有空間了,就和int b 已經有空間了一樣。c是乙個指標陣列,c也已經有空間了,有3個元素,但是這三個元素是還沒有分配空間的指標,所以要用malloc分別為他們分配記...

結構體 指標 陣列

若我們用 0x9999 來標記記憶體位址,則 0x9999 表示該位址記憶體中儲存的數值 變數int a a 0x9999 1 a 0x9999 指標int a a 0x8888 0x9999 a 0x8888 0x9999 1 a 0x8888 結構體變數 struct mystruct s s ...