(一)一個指針引用字元串的小例子 把字元串a複製到字元串b (二)字元指針做函數參數 實參和形參都可以選擇字元數組名和字元指針變數,但存在區別:(1)編譯時為字元數組分配若幹存儲單元,以存放個元素的值,而對字元指針變數,只分配一個存儲單元(2)指針變數的值是可以改變的,而數組名代表一個固定的值(數組 ...
(一)一個指針引用字元串的小例子
把字元串a複製到字元串b
1 #include<stdio.h> 2 int main(){ 3 char a[]="i am a boy",b[20],* p1, *p2; 4 p1=a; p2=b; //p1,p2分別指向a,b數組的第一個元素 5 for(;*p1!='\0';p1++,p2++) 6 *p2=*p1; 7 *p2='\0'; 8 printf("%s",b); 9 }
(二)字元指針做函數參數
實參和形參都可以選擇字元數組名和字元指針變數,但存在區別:
(1)編譯時為字元數組分配若幹存儲單元,以存放個元素的值,而對字元指針變數,只分配一個存儲單元
(2)指針變數的值是可以改變的,而數組名代表一個固定的值(數組首元素的地址),不能改變
char *a="i am a student" a=a+7; //合法的 char str[]={"i am a student"}; str=str+7 //非法的
(3)字元數組中各元素的值是可以改變的,但字元指針變數指向的字元串常量中的內容是不能改變的
char a[]="house"; char *b="house"; a[2]='r'; //合法 *(b+2)='r'; //非法
接著,引入一個用字元數組名作為函數參數的例子,實現字元串的複製
1 #include<stdio.h> 2 int main(){ 3 void copy_string(char from[] ,char to[]); 4 char a[]="i am a teacher"; 5 char b[]="you are a student"; 6 7 copy_string(a,b); //把a複製到b 8 printf("%s\n%s",a,b); 9 } 10 void copy_string(char from[], char to[]){ 11 int i=0; 12 while(from[i]!='\0'){ 13 to[i]=from[i]; i++; 14 } 15 to[i]='\0'; 16 }
(三)可變格式輸出函數
char *format; format="a=%d,b=%d\n"; printf(format,a,b);
可變格式輸出函數,只需要改變format所指向的字元串,就可以改變輸入輸出格式