吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4799|回复: 61
收起左侧

[分享] C语言基础第五课:正向基础

  [复制链接]
niucaidi 发表于 2021-7-12 18:22
本帖最后由 niucaidi 于 2021-7-12 18:24 编辑

正向基础

什么是声明变量

//全局变量的声明                        
int a,b,c;    //全局变量的声明                        
void Fun()                        
{                        
        a = 10; //全局变量的赋值                
        b = 20;                
        c = a;                
}                        
void Fun()                                
{                                
        int a,b,c;  //局部变量的声明                        
        a = 10;     //局部变量的赋值                        
        b = 20;                        
        c = a;                        
}                                

总结:声明变量的宽度存储格式数据类型决定.计算机什么时候分配内存,取决于变量的作用范围,如果是全局变量,在程序编译完就已经分配了空间,如果是局部变量,只有所在的程序被调用的时候,才会分配空间.全局变量如果不赋初始值默认0,但局部变量在使用前一定要赋初值.


C语言的类型转换在汇编中是如何执行的

  • movsx:先符号扩展,再传送,针对有符号数

反映在C语言中

        char i = 0xFF;                
        short k = 0xFFFF;                        
        int h = 0xFFFFFFFF;                

反映再汇编中

        MOV AL,0XFF
        MOVSX CX,AL
        MOV AL,0X80
        MOVSX CX,AL
  • movzx:先用零扩展,再传送,针对无符号数

反映在C语言中

        unsigned char i = 0xFF;                        
        unsigned short k = 0x00FF;                                                
        unsigned int h = 0x00000000FF;                        

反映再汇编中

        MOV AL,0XFF
        MOVZX CX,AL
        MOV AL,0X80
        MOVZX CX,AL

C语言表达式的特点

  1. 表达式无论多么复杂都只有一个结果
  2. 不与程序中其他元素有任何关联的表达式也可以编译通过,但并不生成汇编代码,表达式只有与需接受赋值的对象或其他流程控制语句配合使用才有意义
  3. 如果表达式中有宽度不同的变量,结果的宽度将与宽度最大的变量一致
  4. 如果表达式中同时存在有符号数和无符号数,表达式的运算结果将转换为无符号数

C语言循环体

  1. while循环
    int main()
    {
          int i[10] = {0};
          int t = 0;
          while(t<10)
          {
                  printf("%d\n",i[t]);
          }
    }
  2. do...while循环
    int main()
    {
          int i[10] = {0};
          int t = 0;
          do{
                  printf("%d\n".i[t]);
          }while(t<10);
    }
  3. for循环
    int main()
    {
          int i[10] = {0};
          int t = 0;
          for(t = 0;t < 10;t++)
          {
                  printf("%d\n",i[t]);
          }
    }
  • continue:跳过本次循环,进入下一次循环
  • break:结束整个循环

结论:

  • 三个循环体可以互相转换,任何一种循环可以实现的功能都可以用另外两种循环实现
  • 三个循环体在正向编程中难易程度从难到易排序为:1.do..while、2.while、3.for
  • 三个循环体的执行效率从高到低排序依次为:1.do..while、2.while、3.for

本节作业:

1、将两个变量的值交换.                                                

2、将一个数组中的数倒序输出.                                                

3、找出数组里面最大的值,并返回                                                

4、将数组所有的元素相加,将结果返回                                                

5、将两个等长数组相同位置的值相加,存储到另外一个等长的数组中                                                

6、写一个函数int prime(int x),如果x是素数返回值为1,否则返回0。                                                

7、俩俩比较数组的值,将最大的一个存储到数组的最后一个位置                                                 

8、编写程序实现一个冒泡排序的算法.                                                

9.判断数组是否是对称的,如果是返回1,不是返回0.

免费评分

参与人数 23吾爱币 +17 热心值 +17 收起 理由
qingfengbujiefe + 1 我很赞同!
JenaLi + 1 我很赞同!
mumu0718 + 1 我很赞同!
tomcar + 1 用心讨论,共获提升!
Gical + 1 + 1 我很赞同!
雁书 + 1 + 1 我很赞同!
chenkeai深蓝 + 1 谢谢@Thanks!
jackej + 1 热心回复!
lovehfs + 1 + 1 我很赞同!
我不是旧时 + 1 + 1 我很赞同!
天使的影子 + 1 谢谢@Thanks!
九天666 + 1 谢谢@Thanks!
吾爱师姐! + 1 + 1 我很赞同!
huiker231 + 1 DO While 句型,里面的英文逗号是不是写成点了
杨辣子 + 1 + 1 用心讨论,共获提升!
美丽兔兔 + 1 + 1 我很赞同!
FJFJ + 1 + 1 谢谢@Thanks!
18269055653 + 1 + 1 热心回复!
筱轩孜 + 1 + 1 谢谢@Thanks!
2552WX + 1 热心回复!
为知 + 1 我很赞同!
sqhs008 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
layuai + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| niucaidi 发表于 2021-7-15 21:09
detianda 发表于 2021-7-15 20:36
练了几个月,竟然看不懂,咋办呢

正常的,这个笔记是从逆向的角度加深对C语言的理解,研究的是正向学习C语言一般不会研究的问题,而且也只是笔记而已,算不上完整的教程。不用沮丧,一起加油
骄阳似我 发表于 2021-8-8 19:37
niucaidi 发表于 2021-7-15 21:09
正常的,这个笔记是从逆向的角度加深对C语言的理解,研究的是正向学习C语言一般不会研究的问题,而且也只 ...

这个我看的懂,但是我对于学习C语言没有点进步的思路,就是说看见一个案例我再去看,再去分析怎么写,一=就是不知道能怎么做才能再进一步,没有一点的学习方向
傻小猪 发表于 2021-7-12 19:18
MY木头 发表于 2021-7-12 20:01
感谢楼主
bdrdc 发表于 2021-7-12 20:11
这个不错,好好研究研究.......
liangqz 发表于 2021-7-12 20:22
学习学习
gnn347 发表于 2021-7-12 21:01
认真学习,谢谢分享!
xinunil 发表于 2021-7-12 21:10
又温习了一遍,大学的东西都忘干净了,感谢
appleding 发表于 2021-7-12 21:51

非常好!GOOD!!辛苦了
nip777 发表于 2021-7-13 00:42
感谢楼主分享,收藏学习。
1983 发表于 2021-7-13 01:43
真的是就当复习,但是内容有点点短
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-20 07:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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