(個人總結,如有不正確的地方,望指正)
[儲存型別] 資料型別 *指標變數名 [=初始值];如int*p=null;
指標型別 int* ; 基(礎)型別int; 指標指向的地方就是指標變數的值&x;位址型別void *
注意:任何指標變數被建立時不會自動成為null指標,它的預設值是隨機的,它會亂指一氣。因此如果在短期不用的話,就先把指標賦值為null。
十進位制printf(「%lu」,p); 十六進製制printf(「%p」,p);或printf(「%x」,p);
int i; i是整型。
int *i; i是整型指標。
int **i; i是整型指標的指標。
int *i[5]; i是含有5個元素的整形指標陣列。
int (*i)[5]; i是指向5個元素的指標。
int *i(); i是返回值為整型指標的函式。指標函式
int(*i)(); i是返回整型的函式指標。函式指標
int *(*i)(); i是函式指標,函式返回整型指標。
int *(*i)(); i是函式指標陣列,函式返回整型指標。
int *((*i)())[5] i是函式指標,函式返回指向5個整型指標原則的指標。
1、 將指標指到陣列末尾 dowhile(*s);
2、 陣列名是指標常量,它不能指向其他位址;同int* const s。
指向常量字串的字元指標,不能改變字串中的字元;這一點有點像常量指標。
3、 行指標:str+1、pt等;列指標str[0]、p等
二維陣列嚴格意義上還是一維陣列。對於intstr[2][3],*p=str,(*pt)[3];列指標p是一維的(p把str當一維陣列處理);行指標是二維的(pt把str當二維陣列處理);陣列名str把自己當作二維陣列處理。,**str、*p、**pt表示陣列元素str[0][0]。
如果把火車和座位看成位址,座位上的人是元素。那麼二維降維後的一維,如同火車頭和火車的第乙個座位,都代表位址。即str,str[0],pt[0],pt都代表str的首位址&a[0][0]。
p+i*3+j、*(pt+i)+j代表str[i][j]的位址。
可以看出str和pt基本相同。
4、 指向指標的指標可以通過指標陣列來間接的控制二維陣列,但一維和二維處的位址是不同的。
演示:
#include "stdio.h"
void main()
,(*pt)[3]=a,*t[2]=,**pp=t;
printf("a[0]=%p,pt=%p,pt[0]=%p\n",a[0],pt,pt[0]);
printf("%p%p %d\n",pp,*pp,**pp);
}
「傳值不變,傳址變。」在有指標的**中就不適用了。應該從實參形參和指標的指向進行分析。
演示:
#include "stdio.h"
void fun(int *a,int *b)
void main()
不同型別的檔案
cpp檔案 cpp是用c 語言編寫的源 檔案的字尾 具體實現 h檔案 h是c語言和c 語言的標頭檔案 函式宣告,巨集定義,函式原型 pde檔案 一共有4種可能,分別為 1 powerdesk encrypted file 2 pathology data exchange file 3 afp pa...
C 不同型別指標的相互轉化
寫c已經有一段時間了,今天聽到有人說c的不同指標型別不能相互轉化!我不相信,但畢竟對方資歷比我深,慎重起見,只是笑過。但一直想著這個問題,於是剛才寫了乙個簡單的demo,測試了c指標的效能!年輕就是要敢於質疑!我還記得之前看過windows程式設計時,很多函式使用了類似 以下的寫法,所以才確信自己的...
C 不同型別的畫筆!
畫筆是可以與graphics物件一起用來建立實心形狀和呈現文字的物件。1.solidbrush 畫筆最簡單形式,用純色進行繪製。2.hatchbrush 類似與 1 但它可以選擇大量預設圖案,而不是純色。要命名空間 using system.drawing.drawing2d 3.texturebr...