物联网学习教程—字符指针作函数参数

273 阅读1分钟

  用字符数组作参数

  例1.用函数调用实现字符串的复制

  #include<stdio.h>

  void main()

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

  char a[]=″Iam a teacher.″;

  charb[]=″you are a student.″;

  printf(“string a=%s\nstringb=%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[])

  {inti=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.

  stringb=I am a teacher.

  (2)形参用字符指针变量

  #include<stdio.h>

  void main()

  {void copy_string(charfrom,charto);

  char*a=″Iam a teacher.″;

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

  printf("string a=%s\nstringb=%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(charfrom,charto)

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

  *to=from;

  *to=′\0′;

  }

  (3)对copy string函数还可作简化

  1、将copy_string函数改写为

  void copy_string(charfrom,charto)

  {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[],charto[])

  {char*p1,*p2;

  p1=from;p2=to;

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

  }