指標學習資料(zollty-2009)
1.指向普通變數或者某個數或者字串。例如
int j,a[10];
int *pointer_1,*pointer_2;
pointer_1=&j;
pointer_2=&a[7];
2.指標作為函式引數。例如
(主函式部分)
pointer_1=&a;pointer_2=&b;
if(a
(交換兩數的函式)
void swap(int *p1,int *p2)
swap接受主函式傳來的兩個數a和b的位址,用p1和p2去指代,然後交換p1和p2的內容,則在記憶體上引起了改變,所以原來的a和b所對應的值改變。
3.指向陣列首位址【例1】
對於一維陣列:p=a; 呼叫:*(a+i)或者*(p+i)
對於二維陣列:p=a[0]; 呼叫:*(a[0]+i)或者*(p+i)
4.指向陣列的每行【例2】
形如:int a[3][4];
int (*p)[4]; p=a;
呼叫:*(*(p+i)+j)
5. 指向函式。例如
int max(int x,int y);
n=max(a,b);
可以改作:
int (*p)(int,int);
p=max;
n=p(a,b);
6.返回指標值的函式。例如
int *a(int x,int y);
7.指標陣列。【例3】
它是乙個陣列,例如
int *p[4];
char *name=;
8.指向指標的指標【例4】
形如 char **p;
9.指標的運算
(1)減法:如果兩個指標指向同一陣列,則兩個指標之差為它們之間間隔的元素個數,比如p1指向a[1],p2指向a[4],則p2-p1=3。而p1+p2無意義;
(2)比較,>、<、=,比較的是同一陣列中的元素的先後順序;
(3)賦值,同型別的指標才能相互賦值,若p1為int型,p2為float型,則可以強制轉換p1=(int *)p2;
(4)可以令p=null,即使指標指向位址為0的單元,因為指標在未賦值以前指向的是乙個未知的位址,這是非常危險的,所以不妨在引用它以前就把null賦值給它。
【例】
1.普通指標指向多維陣列
#include
using namespace std;
int main() ;
int *p;
for(p=a[0];p
cout<<*p++<<" ";
cout<
return 0; }
2.行指標指向多位陣列
形如(*p)[10],用法為*(*(p+i)+j)
#include
using namespace std;
int main() ;
int (*p)[4],i,j;
cin>>i>>j;
p=a; //a代表的是陣列第一行的首位址.
cout<<*(*(p+i)+j)<
return 0; }
3.用來裝字串的陣列
方法一:(指標法)
#include
using namespace std;
int main() ;
cout<
return 0;
注意:輸出的時候用的是name[0]而不是name或者*name[0],後面(例4)將說明原因。 }
方法二:(字元陣列法)
#include
using namespace std;
int main() ;
cout<
return 0; }
注意:方法二不適合類似於int a[2][3]=,};的陣列(此時若想輸出a[0]則是錯誤的做法)。
方法三:(字串陣列法)
#include
#include
using namespace std;
int main() ;
cout<
return 0; }
4. #include
using namespace std;
int main() ;
p=name+2;
cout<<*p<
cout<<**p<
return 0; }
分析:*p=name[2]= "c++"的首位址,(通常所說乙個字串的「位址」實際上指的是它的「首位址」或者「起始位址」),用cout 輸出的不是字串的首位址而是整個字串(只要把乙個字串的起始位址給它,cout就一直往後面輸出,直到遇到結束符'\0'為止),
為了證明這一點,請看:string a=「finish」;cout<
例4,第乙個*p輸出"c++",第二個**p代表"c++"首位址的內容,即c。
C語言指標深入分析
指標是c語言的精髓,也是c語言的難點,一起加油鴨!參考c語言指標詳解 經典,非常詳細 指標本質上就是乙個位址,占用的儲存空間固定,一般為四個位元組。很重要的一點是指標指向的只是資料的首位址,那麼計算機如何知道這個資料具體有多長呢?答案是通過指標的型別來確定。換句話說,指標的型別的作用就是告訴計算機取...
深入分析C 引用 指標常量
引言 我選擇寫 c 中的引用是因為我感覺大多數人誤解了引用。而我之所以有這個感受是因為我主持過很多 c 的面試,並且我很少從面試者中得到關於 c 引用的正確答案。那麼 c 中引用到底意味這什麼呢?通常乙個引用讓人想到是變數的別名,而我討厭將 c 中引用定義為變數的別名。這篇文章中,我將盡量解釋清楚,...
IsPostBack深入分析
1 ispostback 介紹 ispostback是 page類有乙個 bool型別的屬性,用來判斷針對當前 form的請求是第一次還是非第一次請求。當 ispostback true時表示非第一次請求,我們稱為 postback,當 ispostback false時表示第一次請求。在 asp....