搜索
查看: 2502|回复: 6
打印 上一主题 下一主题

网上视频教程里的例子,我这样改写和分析代码的对吗?

[复制链接]
跳转到指定楼层
楼主
发表于 2012-7-21 18:59:40 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
视频里的例程是这样写程序源代码的:
#include <stdio.h>
void main()
{   char *s1,*s2 ,
          str1[30]="BeiJing",str2[10]="China";
     for(s1=str1;*s1!='\0';s1++);
     for(s2=str2;*s2!='\0';)
        *s1++=*s2++;
    *s1='\0';
    printf("%s\n",str1);}

=======================
我把例程的源代码改写和分析如下,如果分析错了,请高手指教!我将不胜感激!先说声谢谢啦!

/*指针发应用例程:将字符串str2复制连接到str后*/------->此注释是我自己添加的,为的是以后读程序能够知道程序的功能。
#include <stdio.h>
int main()
{                                                                   ------->(疑问1)花括号书写规范是不是应该单独占一行?
    char str1[30]="BeiJing",str2[10]="China";------->(疑问2)按照自学考试教程的要求,定义指针前应该先定义要指向的
    char *s1,*s2;                                                         数据,所以我把字符串数组定义在先,指针定义在后,这样理解对吗?
    for(s1=str1;*s1!='\0';s1++);------->(疑问3)这个for循环执行语句是个空语句,所以后直接以分号“;”结束,这样理解对
    for(s2=str2;*s2!='\0';)                                     吗?
        *(s1++)=*(s2++);-------->(疑问4)我觉得这样加上“()”书写比较清楚,表达的意义唯一,程序易读没有二意性,这样
    *s1='\0';                                   理解对吗?虽然程序运行正确,但是我觉得加上括号好像改变了上面例程里代码的意思!?
    printf("%s\n",str1);
   sleep(5000);
   return 0;
}

沙发
 楼主| 发表于 2012-7-21 19:04:05 | 显示全部楼层
上面写乱了。所以重新排版在发布一下:
=================================

视频里的例程是这样写程序源代码的:

#include <stdio.h>
void main()
{   char *s1,*s2 ,
          str1[30]="BeiJing",str2[10]="China";
     for(s1=str1;*s1!='\0';s1++);
     for(s2=str2;*s2!='\0';)
        *s1++=*s2++;
    *s1='\0';
    printf("%s\n",str1);}

===================================
我把例程的源代码改写和分析如下,如果分析错了,请高手指教!我将不胜感激!先说声谢谢啦!

/*指针发应用例程:将字符串str2复制连接到str后*/------->此注释是我自己添加的,为的是以后读程序能够知道程序的功能。
#include <stdio.h>
int main()
{  ------->(疑问1)花括号书写规范是不是应该单独占一行?
    char str1[30]="BeiJing",str2[10]="China";------->(疑问2)按照自学考试教程的要求,定义指针前应该先定义要指向的 数据,所以我把字符串数组定义在先,指针定义在后,这样理解对吗?
    char *s1,*s2;                                                        
    for(s1=str1;*s1!='\0';s1++);------->(疑问3)这个for循环执行语句是个空语句,所以后直接以分号“;”结束,这样理解对  吗?
    for(s2=str2;*s2!='\0';)                                   
        *(s1++)=*(s2++);-------->(疑问4)我觉得这样加上“()”书写比较清楚,表达的意义唯一,程序易读没有二意性,这样 理解对吗?虽然程序运行正确,但是我觉得加上括号好像改变了上面例程里代码的意思!?
    *s1='\0';                                 
    printf("%s\n",str1);
   sleep(5000);
   return 0;
}
板凳
 楼主| 发表于 2012-7-23 11:21:35 | 显示全部楼层
3guoyou3333 发表于 2012-7-23 10:23
楼主学了多长时间了,看疑问一应该不会学很长时间,但是怎么刚开始就学指针了~~~  能看懂吗?  基础要打好  ...

我自学C语言快了一个月了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表