指针06 – 零基础入门学习C语言46

第八章:指针06让编程改变世界Change the world by program字符指针作函数参数出错了:关于a[]和*a的一些区别!includevoid  main(){void copy_string( char from, char to );char *a = "I am a teacher.";char b[] = "You are a stu

第八章:指针06

让编程改变世界

Change the world by program

字符指针作函数参数

出错了:关于a[]和*a的一些区别!

include

void  main()

{

      void copy_string( char from, char to );

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

      char b[] = "You are a student."; //此处应该定义为char b[] = "You are a student.";

                                       //区别两者反汇编代码并解释其意义

                                       //谈谈五个区!

      printf("String a = %snString b = %sn", a, b);

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

      copy_string(a, b);

      printf("nString a = %snString b = %sn", a, b);

}

void  copy_string( char from, char to )

{

      for( ; *from != '?'; from++,to++)

      {

            to = from;

      }

      *to = '?';

}

优化:对 copy_string 函数还可作简化

方法一

include

void  main()

{

      void copy_string( char from, char to );

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

      char b[] = "You are a student.";

      printf("String a = %snString b = %sn", a, b);

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

      copy_string(a, b);

      printf("nString a = %snString b = %sn", a, b);

}

void  copy_string( char from, char to )

{

      while( (to = from) != '?' )

      {

            to++;

            from++;

      }

}

方法二

include

void  main()

{

      void copy_string( char from, char to );

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

      char b[] = "You are a student.";

      printf("String a = %snString b = %sn", a, b);

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

      copy_string(a, b);

      printf("nString a = %snString b = %sn", a, b);

}

void  copy_string( char from, char to )

{

      while( (to++ = from++) != '?')

      {

            ;

      }

}

方法三

include

void  main()

{

      void copy_string( char from, char to );

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

      char b[] = "You are a student.";

      printf("String a = %snString b = %sn", a, b);

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

      copy_string(a, b);

      printf("nString a = %snString b = %sn", a, b);

}

void  copy_string( char from, char to )

{

      while( *from != '?' )

      {

            to++ = from++;

      }

      *to = '?';

}

方法四

include

void  main()

{

      void copy_string( char from, char to );

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

      char b[] = "You are a student.";

      printf("String a = %snString b = %sn", a, b);

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

      copy_string(a, b);

      printf("nString a = %snString b = %sn", a, b);

}

void  copy_string( char from, char to )

{

      while( to++ = from++ )

      {

            ;    // '?' == 0

      }

}

方法五

include

void  main()

{

      void copy_string( char from, char to );

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

      char b[] = "You are a student.";

      printf("String a = %snString b = %sn", a, b);

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

      copy_string(a, b);

      printf("nString a = %snString b = %sn", a, b);

}

void  copy_string( char from, char to )

{

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

      {

            ;

      }

}

方法六

include

void  main()

{

      void copy_string( char from, char to );

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

      char b[] = "You are a student.";

      printf("String a = %snString b = %sn", a, b);

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

      copy_string(a, b);

      printf("nString a = %snString b = %sn", a, b);

}

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

{

      char p1, p2;

      p1 = from;

      p2 = to;

      while( (p2++ = p1++) != '?' )

      {

            ;

      }

}

视频下载
技术, IT技术, 视频教程, C语言

原文发布于宽客论坛,点击阅读原文