第七章•指標

※指標與變數的關係

定義:用途再存放某一變數的位址

int i=100;
int *ptr=&i;    //ptr存放 i 的位址
int i=100;
int *ptr;    
ptr=&i;      //ptr存放 i 的位址
printf("i=%d, ptr=%x, *ptr=%d, &ptr=%x\n",i,ptr,*ptr,&ptr);

※一維陣列與指標的關係

陣列名稱也是指標,表示位址,但為指標常數,不可更改位址。

int index;
int i[]={0,1,2,3,4};
int *ptr=i;    //ptr存放 陣列 i 的位址,i已經是指標,所以不需要加 &
for(index=0;index<5;index++)
        printf("i[%d]=%d\n",index,i[index]);
for(index=0;index<5;index++)
        printf("ptr[%d]=%d\n",index,ptr[index]);
for(index=0;index<5;index++)
        printf("*(ptr+%d)=%d\n",index,*(ptr+index));
for(index=0;index<5;index++)
        printf("*(i+%d)=%d\n",index,*(i+index));

※二維陣列與指標的關係

int index;
int i[2][3]={0,1,2,3,4,5};
printf("k[1][2]=%d\n",k[1][2]);
printf("&k[1][2]=%p\n",&k[1][2]);
printf("*(k+1)+2=%p\n",*(k+1)+2);
printf("*(*(k+1)+2)=%p\n",*(*(k+1)+2));

※字串與指標

char string[]="computer";
char *ptr="computer";
printf("string=%s,ptr=%s\n",string,ptr);
printf("string+5=%s,ptr+5=%s\n",string+5,ptr+5);
printf("string[5]=%c,*(ptr+5)=%c\n",string[5],*(ptr+5));

※函數與指標

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
        int x=100,y=200;
        printf("x=%d,y=%d\n",x,y);
        swap(&x,&y);
        printf("x=%d,y=%d\n",x,y);
        system("pause");
        reyurn 0;
}
void swap(int *a,int *b)
{
        int tmp;
        tmp=*a;
        *a=*b;
        *b=tmp;
}