指標(初階 和指標陣列

2021-09-27 06:41:12 字數 1310 閱讀 7023

1 指標(初階)

概念: 指標是乙個物件,它存著乙個位址,在這個位址中存該指標的值

eg: 門牌號 001 小呂家

32位作業系統 32條位址匯流排,可以查詢 2^32的定址範圍

2^32/1024/1024=4g 指標佔4位元組(32位作業系統4位元組,64位下8位元組)

不同型別的指標可以接收不同型別的位址

char* pc=&ch;

int*pa -=&int

void* (1)可以接受不同型別的指標,但不能進行解引用

(2)不能進行指標運算(因為它是無型別的,沒辦法確定返回的長度)

不同 *型別加整數後的位址取決於原來的型別;

eg short * p=&sh

p+2 位址100

p+2的位址為104

<1>野指標(沒有指向)

eg int* p

他沒有位址,執行時會報錯;

非要初始化時 初始化為 (空指標) int* p=null;

(null相當於0位址,該位址拒絕訪問,被保護),所以不能解引用,不然會崩潰;

<2>(什麼型別指標解引用之後對應相應位元組) ———>大小端(低位址對應低重權(低資料)——>小端,相反大端)

一般手機是小端,電腦是大端

如何判斷作業系統大小端?

int n =0x12345678;

char* pc=(char *)&n

printf("%x",*pc);(解引用1個位元組,乙個位元組可以存兩個位,);

結果為如果輸出是78就是小端,輸出12就是大端;

<3>指標和陣列名

2; sizeof(陣列名)代表整個陣列位元組大小

3: p[i]=*(p+i)即陣列的 [ ] 跟解引用等價

4:指標減指標所得他們的距離(只有在兩個指標同時作用在同一塊記憶體時才有意義)

eg;int a=

int* p=&a[4];

int* p1=&a[2];

p-p1=2;(得距離)

*vp++ = 0;  等價於 *vp=0; vp++;

<4> 允許指標跟陣列最末元素得後乙個比較,但不允許跟首元素前乙個比較

eg: int a[3];

int *p;

for(p=0;*p指標陣列

指標陣列就是陣列,只不過內存放的為位址

int a[3]= 模擬 int* b[3]=

int* c=(其中arr1,arr2,arr3均為陣列)

指標的初階

1.指標的概念 指標就是變數,就是存放位址的變數 include include intmain 對於32位的機器,假設有32根位址線,那麼假設每根位址線在定址的是產生乙個電訊號正電 負電 1或者0 那麼32根位址線產生的位址就會是 00000000 00000000 00000000 000000...

陣列指標和指標陣列 函式指標和指標函式

一 陣列指標與指標陣列 1,指標陣列 所謂指標陣列,就是指標組成的陣列,即陣列的元素為指標 int pa size size為元素數目,元素的值為int型別的指標 2,陣列指標 所謂陣列指標,就是指向陣列的指標,即其是乙個指標,指向陣列。int pa size size為陣列的元素數目,pa指向乙個...

陣列指標和指標陣列

陣列指標 也稱行指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣賦值 int a 3 4 int p 4 該語句是定義乙個陣列指標,指向...