C語言指標入門(二)

2021-08-11 14:25:12 字數 2820 閱讀 6210

指標

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...