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