C語言基礎

2022-09-19 23:42:09 字數 1593 閱讀 3035

&:取位址賦值或傳參

*:訪問指標變數所指的空間

int i;//宣告int型別的變數i

int* p=&i;//宣告int型別的指標變數並賦值變數i的位址,也就是說讓p指向i所代表的int記憶體空間

int* p,q;//這句和下一句一樣效果,int*不是完整的,而*p才構成指標變數,所以q是int而不是指標

int *p,q;

//作為引數宣告,指定需要對方提供變數位址作為引數傳遞

//int i=0;fun(&i);

//作為函式可以通過指標來訪問外面定義的i變數所指的空間

void fun(int *p)

//函式內使用

int k = *p;

*p = k+1;

//場景一:使用函式交換變數

//場景二a:函式返回多個值,給函式提供存放區

//場景二b:函式返回運算狀態,結果通過指標返回(為了避免結果中含有意義不明的部分,比如0或-1也為有效結果時)

//注意沒有初始化的指標值可能隨機內容,當使用*p去運算時,它指向**完全不可預料,會出現異常也不可預料

傳遞陣列進入函式時,其實傳遞的是陣列位址,也就是首位址,在函式內,sizeof函式無法判斷陣列的真實大小,因為它在函式中變成指標

但是,與其說陣列變成指標,不如說陣列變數本身表達的是位址

//以下四種函式原型是等價的

int sum(int *ar, int n);

int sum(int *, int);

int sum(int ar,int n);

int sum(int , int);

//注意

int a[10];

int *p=a;//無需用&取位址

//但是陣列的單元表達的是變數,需要用&取位址

a == &a[0]

//運算子可以對陣列做,也可以對指標做

//p[0]等價於*p

//int a[10]; *a等價於a[0]

//可以認為陣列變數是const的指標,不能被賦值

int a; int * const a=....

所指的是const

int i;

const int* p1;

int const* p2;

int *const p3;

//判斷哪個被const了的標誌是const在*的前面還是後面:*前面-唯讀指標;*後面-指標值固定

//總是可以把非const的值轉換稱const的

void f(const int* x);

int a = 15;

f(&a); //ok

const int b = a

f(&b); // ok

b = a+1; //error!

int sum(const int a,int length);

這些算術運算可以對指標做:

null是乙個預定義的符號,表示0位址

轉換指標可以轉換型別

c 語言基礎

三個訪問描述符 public private 和protected 都可以修飾類的資料成員和成員函式 public 可以可以被任何訪問,private 只能被該類的公,私成員函式,該類的友元函式或者友元類的成員函式訪問。protected 只能被該類的公,私成員函式和該類的派生類訪問。c 中除了,和...

c語言基礎

1.問題描述 從鍵盤輸入三個整數,分別存入x,y,z三個整型變數中,計算並輸出三個數的和以及平均值。輸入形式 從鍵盤輸入三個整數,整數之間以空格隔開。輸出形式 在螢幕上分兩行顯示結果 第一行為三個數的和,整數形式輸出 第二行為三個數的平均值,浮點數形式輸出,小數點後保留兩位小數。輸入樣例 3 2 3...

C語言基礎

找最大最小整數 2.問題描述 編寫乙個程式,使用者輸入若干整數,試找出其中的最大數和最小數。輸入形式 使用者在第一行待輸入資料個數,在第二行輸入資料。輸出形式 程式在下一行輸出資料的最大值和最小值 樣例輸入 589 62 96 74 52 樣例輸出 96 52 樣例說明 使用者第一次輸入的為資料個數...