第七章•指標
※指標與變數的關係
定義:用途再存放某一變數的位址
例 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;
}