/*
//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 ...