飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2145|回复: 1

[C/C++] C语言--学习笔记--第三课

[复制链接]
  • TA的每日心情

    2019-4-15 08:38
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2017-4-30 12:47:50 | 显示全部楼层 |阅读模式
    本帖最后由 TOM 于 2017-4-30 13:12 编辑

    这份笔记是学习Nisy的C语言课程时随笔记录的(开始只是想根据每课的内容做个大纲;后来发现根据课程的讲解做做笔记可以加深不少印象);记录的内容和顺序大致和课程相同,也有一些自己的注释和疑问(未进行二次处理,难免有记录失误的地方);笔记中的代码,在turboc2中都可编译运行;看论坛里有人发布过这套C语言的课后作业,好像还没有人发布过笔记,就发出来仅供参考!

    [C] 纯文本查看 复制代码
    
    main()
    {
            int i;
            int j;
            int k;
    
            scanf("%d %d",&i,&j);
    
            printf("%d\n",i + j);
    
            k =(int)&i;        /* 把&i的地址给K,需要说明数据类型  */
    
            printf("i = %d\n",&i);
    
            printf("k = %d\n  char  k = %d",* (int *)k,* (char *)k);  /* * (int *)k 这句话的意思是把K单元内存放的数据当成一个地址,然后读取地址里面的数据。 */
    
    }
    
    变量i单独写就是内存中的真实数据,&i这样写代表内存的地址
    到目前为止1 + 1就讲解完了,其实就是自己建立一个内存模型,了解数据在内存中的真实存储方式。
    
    ========================================================
    char k;   // 申请一个连续的(char)单元
    char i[n] // 申请n 个连续的(char)单元
    
    k <==> *(&k)
    
    i <==> &i
    
    main()
    {
            char i[4];
    
            scanf("%d %d",i,i+1);
    
            printf("%d",*i + *(i + 1));
    }
    输入300(12c) 123(7b)
    
    结果是167(A7)
    
    申请是char单元最大存储是-128 ~ 127为什么结果是167?
    
    因为%d输入时进行了扩展00A7.
    
    疑问?
    main()
    {
            char i[4];
    
            scanf("%d %d",i,i+2);
    
            printf("%d",*(int *) i + *(int *)(i + 1));
    }
    
    输入300(12c) 123(7b)
    结果31789   计算过程应该是(7b+1)2c == 7c2c ==31788 为什么结果是31789
    
    疑问2?
    
    * (int *) 这个后面可以跟变量,也可以跟  i(代表地址的时候) i[4] 
    
    ==============================================
    main()
    {
            char i[4];
    
            scanf("%d %d",i,i+2);
    
            printf("%d",*(int *) i + *((int *)i + 1));
    }
    *((int *)i + 1)  定义了(int *)i 在加1是加前面已经定义的单元长度
    
    int i[4];
    
    i <==> &i
    
    i[0] = *(i+0)
    i[1] = *(i+1)
    i[2] = *(i+2)
    
    int k;
    
    k <==> 等于单元里面的数据
    
    
    三角形:
    main()
    {
            int i[4];
    
            int k = 0;
    
            scanf("%d %d %d",i,(i+1),(i+2));
    
           if(i[0] <= 0)
              {
                    printf("%d is Over!!\n",i[0]);
                    k = 1;
              } 
            if(i[1] <= 0)
              {
                    printf("%d is Over!!\n",i[1]);
                    k = 1;
              }
            if(i[2] <= 0)
              {
                    printf("%d is Over!!\n",i[2]);
                    k = 1;
              }
    
            if(i[0]+i[1] > i[2] && i[0]+i[2] > i[1] && i[1]+i[2] > i[0])
              {
              ;
              }
            else
              {
                 k = 1;
              }
    
            if( k == 1 )
              {
                    printf("SJX is Error!!!");
              }
            else
              {
                    printf("%d",i[0] + i[1] + i[2]);
              }
    
    
    }
    
    
    优化一下(不完美)
    
    main()
    {
            int i[4];
    
            int k = 0;
    
            scanf("%d %d %d",i,(i+1),(i+2));
    
           if(i[0] <= 0 || i[1] <= 0 || i[2] <= 0)
              {
                    printf("%d is Over!!\n",i[0]);
                    k = 1;
              } 
    
            if(i[0]+i[1] > i[2] && i[0]+i[2] > i[1] && i[1]+i[2] > i[0])
              {
              ;
              }
            else
              {
                 k = 1;
              }
    
            if( k == 1 )
              {
                    printf("SJX is Error!!!");
              }
            else
              {
                    printf("%d",i[0] + i[1] + i[2]);
              }
    
    
    }
    
    


    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2019-9-21 17:18
  • 签到天数: 23 天

    [LV.4]偶尔看看III

    发表于 2018-10-19 23:22:17 | 显示全部楼层
    沙发!!谢谢分享笔记
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表