指標如果說c語言最有魅力的地方在哪,那麼毋庸置疑,非指標
莫屬了。
眾所周知,c語言中每個變數都有乙個記憶體位址,可以通過&
進行訪問。指標是乙個變數,它的值是乙個變數的記憶體位址
【注意是記憶體位址
】。
指標表示式:
type *var-name;
//其中type代表c語言的資料型別,例如:int,double,char,float
指標宣告
指標進行宣告時,=
的右邊必須為記憶體位址,不可以是變數(但是int*p=0;
除外,該語句表示指標為空)
指標初始化
在初始化指標的時候,如果暫時不需要賦值,可以將值賦值為null,可稱為空指標
。ps: *不賦值null也行,不過賦值null是一種好習慣,但是如果定義指標陣列,大可不必這樣。
首先先介紹一下指標最基本最基本的使用
#include
void
main
()
輸出結果是:
指標訪問值:10
ps:(nil)
就代表空的意思,不同的編譯器顯示不同。
可以簡單的理解為:
如果在*p
中,p
代表乙個記憶體位址,而這個記憶體位址中儲存了乙個值,那麼使用*
可以將這個值取出來,則*p
就代表這個記憶體位址中的值。
例如:
#include
void
main
()
執行結果:
結果是:10
簡單點來說,指標跟陣列沒有半毛錢關係。只是說,經常將指標和陣列拿過來共同使用,於是乎,兩者便有了點關係。
指標陣列
指標陣列定義與陣列定義類似
int a[10];//定義乙個陣列
int *p[10];//定義乙個指標陣列
使用案例:
#include
void
main();
int *p[3]; //此時不要寫成 int *p[3] =null;
for(int i =0;i<3;i++)
for(int j=0;j<3;j++)
}
執行結果:
第0個值是10
第1個值是20
第2個值是30
指標與陣列
首先先說一下指標運算
指標運算有點奇葩,和平常的有點不一樣。假設ptr
是乙個指向int
32位整數型別的指標,所指的位址是100
,那麼執行
ptr++
所得到結果是ptr將指向104
對指標進行自加自減的操作,所加或者所減的值會根據資料型別而不同
,可知,char
型別的指標自加自減的值為1
指標指向陣列
int var=;
int *p = null;
//將p指向陣列的首個元素位址
p = var;
//等價於
p = &var[0];
指標和陣列
#include
void
main();
int *p;
p = var; //也可寫做 p = &var[0];
for(int i = 0;i<3;i++)
}
執行結果
p所指向的值:10
p所指向的值:20
p所指向的值:30
c語言 指標的基本操作
include intmain int ptr1,ptr2,ptr3 ptr1 urn 把乙個位址賦給指標 ptr2 urn 2 printf pointer value,dereferenced pointer,pointer address n printf ptr1 p,ptr1 d,ptr1...
C語言有關指標的種基本操作
賦值 assignment 通常使用陣列名或位址運算子 把乙個位址賦給指標。求值 value finding 或取值 dereferencing 運用 取出指標指向位址中儲存的數值。將乙個整數加給指標 減法同理 可以使用 運算子來把乙個整數加給乙個指標,或者把乙個指標加給乙個整數。兩種情況下,這個整...
c語言指標的基本使用
指標 pointer 是c語言中乙個重點和難點,以下是對其基本使用的一些總結,適合入門的同學。除了是對自己的學習的總結之外,也希望能對大家有所幫助。與c語言其他變數類似,指標也是一種變數,只不過它與其他變數不同,一般變數是直接包含了乙個特定的值,而指標是包含了乙個變數的值所在的位址,也就是說,指標儲...