指標
1. 指標是什麼?起什麼作用?
指標是變數的一種,裡面是乙個位址,通過這個位址找到要找的資料
2. 指標運算子
&是取位址的運算子,*
是表示指標運算子 例:
int *p1,a;
p1=&a;
*p1=3;
例題:#include
int main()
int *p;
int a=3;
p=&a;
printf("%d",*p);
輸出結果:3
3. 指標作函式引數
4. 指標運算——賦值運算
int*p=&a;等價於int *p,p=&a;
在定義時為取位址,p為位址變數
在賦值時為取出位址中的值
例題:int main()
inty=0,x=3;
int*px=&x;
m=*px+5;
y=++*px;
printf("%d\t",m);
printf("%d",y);
執行結果:8 4
int main()
inty=0,x=3;
int*px=&x;
y=*px++;
inta=*px;
printf("%d",a);
執行結果:3
要點:運算子優先順序
例題:int main()
inta[5]=;
printf("%d,%d",sizeof(a),*a);
執行結果:20,1
例題:
int main() ;
char*p=a;
printf("%d,%d,%c\t",sizeof(*a),sizeof(a),*a); // *a
指向首位址,可用
sizeof(a)/sizeof(*a)
計算陣列長度
printf("%d,%d",sizeof(char *),sizeof(p));
}
執行結果:
1, 5,a 4,4
int main() ;
char *pbegin=s;
char *pend=s+dim(s);
for(p=pbegin;p;p++) }
執行結果:
hello
例題:int main() ;
int*p1=&a[0]; /* int*p1,*p2;p1=&a[0],p2=&a[1];*/
int*p2=&a[1]; /* int*p1,*p2;*p1=a,*p2=a+1;*/
printf("%d",p1-p2); /* int *p1;int *p2=p1+1; p2=p1+1; */}
執行結果:-1
null(
自學,書上
)
5.
用指標引用陣列元素
若指標變數
p已經指向陣列中的乙個元素,則
p+1指向同一陣列的下乙個元素。 例:
p的初值為
&a[0]
p+i和
a+i都是
a[i]
的位址
*(p+1)和*
(a+1
)都是p+i
和a+i
所指向的陣列元素,即
a[i]
*(p+5),*(
a+5)就是
a[5]
例題:用指標完成插入(for迴圈)
#include
int main()
char c[100]=;
int i;
char *p=&c[99];
for(i=99;i>2;i--)
*p--=*(p-1);
p++;
*p='d';
printf("%s",c);
執行結果:abcdef
例題(while
迴圈):
int main()
char a[10]=;
char *p=a;
while(*p!='g')
p++;
p++;
while(*p!='c')
*p--=*(p-1);
p++;
*p='d';
printf("%s",a);
執行結果:abcdefg
例題:用指標完成複製
#include
int main()
char a[400]=;
char b[4000];
int i=0;
char *pa=a,*pb=b;
while(a[i]!='\0')
*pb++=*pa++;
printf("%c",*(--pb));
i++;
執行結果:abcd
指標應用注意事項(規範):
(1)int *p=null;
(2)*p/p,*為取值符,後面一定加位址
(3)確認指標迴圈走到**
(4)++*p,*p++;
(5)scanf(「%d」,&m);
(6)*p=*(p--)
字串與字元陣列的區別
(1)char *p=』abcdefg』;
sizeof(p)=4(2
)字串常量可以被訪問,除此之外都不可以,可以遍歷,不可以修改。
C語言 指標入門
在我年輕的時候,我三次鼓起勇氣學習c,三次都倒在了指標上 雖然很清楚指標是一種存放位址的變數,但是他具體是乙個什麼意思呢?我把整個空間看成乙個 n 1 維的空間。n 是資料型別,可能是int,char,double,等等。1 是位址。把位址看成一根數軸。舉個粒子 int pa int a 5 pa ...
C語言 指標入門
指標是乙個用來指示乙個記憶體位址的計算機語言的變數或 處理器中的暫存器。簡單來說,指標 位址 指標是一種變數,也有資料型別和相應的位址。1.指標變數的定義 定義普通變數格式為 資料型別 變數名 指標變數定義如下 int p1 定義了乙個整型指標變數p1 char p2 定義了乙個字元型指標變數p2 ...
C語言入門之 指標
存放位址的變數稱為指標變數。指標變數是一種特殊的變數,它不同於一般的變數,一般變數存放的是資料本身,而指標變數存放的是資料的位址。假設在程式中宣告了1個int型的變數a,其值為68。系統為變數a分配的首位址為0x65fdf4h,p a是存放變數a位址的指標變數,即p a中存放的值為0x065fdf4...