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 該語句是定義乙個陣列指標,指向...