标题:一个for语句惹的祸,谁来解惑
只看楼主
cheenbee
Rank: 2
等 级:论坛游民
帖 子:53
专家分:32
注 册:2011-11-3
结帖率:100%
已结贴  问题点数:10 回复次数:5 
一个for语句惹的祸,谁来解惑
#include<stdio.h>
int main(){
    void copy_string(char *from,char *to);
    char *a="I am a student.";
    char *b="You are a teacher.";
   
    int i;
    printf("string a is:%s\nstring b is:%s\n",a,b);
    copy_string(a,b);
    printf("copy string a to string b!\n");
    printf("string a is:%s\nstring b is:%s\n",a,b);
    putchar('\n');
    return 0;}
 void copy_string(char *from,char *to)
{
    for(;(*to++=*from++)!=0;);
}
不懂copy_string函数中那条for语句的意思也就是运行原理,哪位给解释详细点,感谢!
搜索更多相关主题的帖子: return include teacher 
2011-11-19 19:04
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:2 
你这个能运行吗?字符串常量,不能修改,内存不能write或者段错误

总有那身价贱的人给作业贴回复完整的代码
2011-11-19 19:18
cheenbee
Rank: 2
等 级:论坛游民
帖 子:53
专家分:32
注 册:2011-11-3
得分:0 
回复 2楼 embed_xuel
当然能运行了,你可以试试的!
2011-11-19 19:22
cheenbee
Rank: 2
等 级:论坛游民
帖 子:53
专家分:32
注 册:2011-11-3
得分:0 
回复 2楼 embed_xuel
数组名是常量,它的值不能改变;为什么字符串常量可以改变?求解》?
2011-11-19 20:32
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
得分:2 
函数工作机理和strcpy()是一样的,只不过strcpy()函数是把后一个参数复制到前一个参数里面,改进版的还有strncpy()函数,你可以自己去百度一下,在这就不多说了。
for中的机理是首先++自增运算符优先级最高,但是是在变量的后方,意思是使用过变量以后才进行加一;接着解引用符*发挥作用,对from和to所指向的变量进行操作,接着就是赋值运算符=,把from所指向的变量的值赋给to所指向的变量里面去,同时from和to指针向后移动一位。最终整体表达式的值就是指针移动前from所指向的变量的值,当该值不为NULL(也就是'/0'或者0)时,循环才会进行下去。
存储字符串常量的指针不可以进行直接修改,但是函数里进行运算的是形参,也就是说实参的指针并未进行挪动操作,所以这样是可以的。

何必等待?梦在今朝
2011-11-19 20:59
乔哥
Rank: 2
等 级:论坛游民
帖 子:8
专家分:17
注 册:2011-10-8
得分:2 
能运行
2011-11-19 23:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-355700-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.017009 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved