c高階之指標2

2021-07-24 19:31:24 字數 1235 閱讀 1710

1指標與強制型別轉換:

int char short(相容型)是同一類屬於整型,他們的儲存方式(即轉換成記憶體中的二進位制的方式)是相同的,只是記憶體格仔長度不一樣。

float是一類

double是一類

a做左值存數進去時,是按照a的資料型別來儲存的,用printf()來讀取時是按照裡面的%d,%f,%c之類的來解析,但是記憶體本身的內容是沒有被改變的,只是讀取的解析方法不同。

資料型別決定了乙個數怎麼在記憶體中儲存成二進位制

2乙個指標涉及2個變數:乙個是指標變數自己本身,乙個是指標變數指向的那個變數

所有指標型別都佔4位元組(32位系統),且他們的解析方法都是相同的,都是按照位址的方式來解析。

指標資料型別轉換分析(int *--->char *):

int和char的不同在於char只有乙個位元組而int有4個,所以在char表示的範圍(0--254)時int轉換成char數值不會出錯,當超過char範圍時就會出錯。

當char轉換為int時一定不會出錯。

3sizeof:c語言的乙個運算子(不是乙個函式)---作用:用來返回()裡的變數或資料型別占用的記憶體位元組數。

sizeof存在價值:同一種資料型別在不同平台時所佔記憶體位元組數不同(int在32位-4位元組,16位-2位元組)

sizeof(陣列名)的陣列名不做左值又不做右值,純粹就是陣列名的含義,所以sizeof(陣列名)實際返回的是整個陣列所占用的記憶體空間。

void func(int a)--陣列經過函式的傳遞--只是傳了首元素首位址,陣列的大小已經丟了,這時需要用sizeof(陣列名)來將陣列的記憶體大小傳進子函式(呼叫函式)中

4#define  :巨集定義               #define dpchar char * 

typedef  :製造使用者自定義型別   typedef char * tpchar

dpchar p1,p2;   等同於== char * p1,p2;

tpchar p1,p2;

等同於== char * p1;char * p2;

5很多引數傳參時,可以用結構體打包多個引數,傳參進入子函式。

函式傳參中使用const int *p的作用:不允許傳參函式改變指標所指向的內容

char *p="linux";//不可改變的指標內容

返回值有多個時(非常普遍):使用輸出型引數,將引數(指標形式)傳進函式,然後再作為返回值返回

一般的如果乙個引數是指標形式,加const就是輸入型引數,如果不加一般為輸出型引數

c高階之指標1

1指標 指標的實質就是個變數,它跟普通變數沒有任何區別,指標完整的名字是 指標變數。int a與int p 中a與p繫結的記憶體空間都是4個位元組 指標出現是為了間接訪問 cpu間接定址是cpu設計時決定的 p與 x列印指標,列印出的值是一樣的 下面四種在效果上是一樣的,編譯器不會報錯 int p1...

C高階之指標(一)

陣列指標與指標陣列 1.陣列指標 下面部分程式的目的是想通過函式列印二維陣列元素,include int array 3 4 int print array int p,int m,int n inti,j for i 0 i m i for j 0 j n j printf d p i j pri...

C 高階之指標算術

c 將陣列名視為陣列的第乙個元素的位址。如果兩個指標不是指向同乙個陣列,對兩個指標進行加減或者進行比較是沒有任何意義的。並且兩個指標指向同乙個陣列,兩個指標進行加減運算實際上是對陣列中的元素進行加減或者比較運算的,這樣得出的是沒有什麼實際意義的。加1的結果等於原來的位址上加上指向的物件占用的總位元組...