物聯網學習教程— 字元指標作函式引數

千鋒教育官方發表於2019-08-26

用字元陣列作引數

1.   用函式呼叫實現字串的複製

#include <stdio.h>

void  main ()

{ void  copy_string char from [ ], char to [ ]) ;

   char a[ ]= ″I am a teacher .″;

   char [ ]= you are a student .″;

   printf( string a= %s\n string b=%s\n″,

                a,b)

   printf( copy string a to string b:\n )

   copy_string (a,b);

   printf(" nstring a=%s nstring b=%s n" a b);  

 

void  copy_string char from [ ], char to [ ])

int i=0;

     while from [i]!=′\0′)

 {to [i]= from [i];i++;}

   to [i]=′\0′;

   

程式執行結果如下:

 string  a I am a teacher

 string  b you are a student

 copy string a to string b:

string a I am a teacher

string b= I am a teacher

(2)  形參用字元指標變數

#include <stdio.h>

void  main ()

{ void copy_string char * from char * to) ;

   char * a=″I am  a  teacher . ″;

   char * b=″ you are a student .″;

       printf("string a= %s\n string b=%s\n″,a,b )

         printf("copy string a to string b:\n ");

        copy_ string(a,b);

 printf(" nstring a=%s nstring b=%s n" a b);  

    }

void  copy_string char * from, char * to)

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

  *to = from

  *to =′\0′;

    

(3)  copy string 函式還可作簡化

1 、將 copy_string 函式改寫為

void  copy_string char *from char * to)

  while (( * to= *from )!=′\0′)

     to ++; from ++;}

   

copy_string 函式的函式體還可改為

     while (( *to ++= *from ++)!=′\0′);

  

copy_string 函式的函式體還可寫成

{

     while *from !=′\0′)

  *to ++= *from ++;

     *to =′\0′;

 

•上面的 while 語句還可以進一步簡化為下面的 while 語句:

while *to ++= *from ++);

它與下面語句等價:

while (( *to ++= *from ++)!=′\0′);

*from 賦給 *to ,如果賦值後的 *to 值等於′\0′則迴圈終止(′\0′已賦給 *to

•函式體中 while 語句也可以改用 for 語句:

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

for (; *to ++= *from ++;);

•也可用指標變數,函式 copy_string 可寫為

void  copy_string char from [ ], char to[ ])

char * p1, * p2;

     p1=from ;p2=to;

 while (( *p2 ++= *p1 ++)!=′\0′);

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69914734/viewspace-2654989/,如需轉載,請註明出處,否則將追究法律責任。

相關文章