正文 第35章 指針8(1 / 2)

將一個字符串從一個函數傳遞到另一個函數,可以用地址傳遞的方法,即用字符數組名作參數或用指向字符的指針變量作參數。在被調用的函數中可以改變字符串的內容,在主調函數中可以得到改變過的字符串。這種方法隻是前兩節內容在字符串方麵的應用,在此不再作詳細討論。

[例1016]用函數調用實現字符串的複製。

(1)用字符數組作參數

voidcopystring(charfrom[],charto[])

inti=0;

while(from[i]!=\0)

to[i]=from[i];

i++;

to[i]=\0;/*這條語句不能少!*/

voidmain()

chara[]="helloworld!",b[20];

copystring(a,b);

printf("%s\n",b);

(2)用字符指針變量作參數

voidcopystring(char*from,char*to)

for(;*from!=\0;from++,to++)

*to=*from;

*to=\0;

voidmain()

char*a="helloworld!",b[20];

copystring(a,b);

printf("%s\n",b);

在此要提醒大家的是:目標字符串在定義時,必須用字符數組來處理。如果main函數采用如下實現方法,就會發生錯誤。

main()

char*a="helloworld!",*b="howareyou!";

copystring(a,b);

printf("%s\n",b);

程序編譯沒有錯誤,但在運行時會出現錯誤。請讀者根據字符串的知識,找出錯誤的原因。

1.函數的指針

函數雖然不是變量,但函數在編譯時被分配了一個入口地址,該函數就占用從這個入口地址開始的一段連續的內存區,這個入口地址就稱為函數的指針。和數組名代表數組的起始地址一樣,函數名代表該函數的入口地址。