[中小企业投融资交易会]指针06 – 零基础入门学习C语言46

第八章:指针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言语

原文发布于宽客论坛,点击阅览原文
发布于 2024-01-31 23:01:49
收藏
分享
海报
1
目录