标签: CS50x

  • C语言初入门 —— 基础的杂记

    C语言初入门 —— 基础的杂记

    当你开始学其他语言,回头看Python。你会对Python之禅中“简单优于复杂”有所体会,Python太简洁了😂

    我目前是暑假自学状态,所以本笔记是融合了国际知名的《Harvard CS50x》和国内b站的《鹏哥C语言》。和以前学的Python有些结构重合的部分我就不再提了,文中有的会有些许疑问,我还在学习,若有记得不对的可以提出来哈~

    CS50x:写程序更关注于自己的想法,以及实现需要的函数、条件、循环、变量。

    C语言学习笔记

    //头文件:引入标准输入输出库stdio是缩写,不要拼成studio!
    #include <stdio.h>

    C语言中的变量要先声明变量类型

    main函数是程序的入口 ,C语言程序是从main函数的第一行开始执行。且一个项目中只能有一个main(),一个项目不代表一个文件。

    printf("填入占位符\n", 占位符要代表的)
     //%c,%f,%s,%d这类是占位符。当然也可以直接用。
    

    语言的char单字符数字类型,应当用单引号括住单字符,双引号可以用于字符串(或零字符的字符串)

    字符的本质就是ASCII编码。

    printf("%c\n",'a');
    printf("%c\n",97);//两者输出结果相同
    

    C语言字符串中个特殊的知识,就是在字符串的末尾隐藏放着一这个\0字符是字符串的结束标志。 所以打印函数或者计算字符串长度strlen()的函数会在遇到此字符后停止打印或计算。 观察方法:F10+调试-窗口-监视,填入字符串并展开即可看到。 没有\0字符的情况有可能使用了字符数组

    char arr[] = {'a','b','c','d','e','f'};
    printf("%s\n",arr);
    //但是输出就会没有终止,往往打印的时候后面会尾随乱码。为了避免这种情况,在字符数组后要自己手动添加\0
    char arr[] = {'a','b','c','d','e','f','\0'};

    strlen()string.h的库函数(需要include),统计的就是\0前的字符个数(不计\0本身) 函数本身返回的是size_t类型的,所以占位符最好换成%zd

    C语言中的switch也是代表选择结构的关键字之一

    C语言中还有do while循环

    转向语句:break语句、goto语句、continue语句、return语句

    行内注释用//,多行的要用/* */

    PythonC
    elifelse if
    or||
    and&&
    i+=1 / i-=1可用左边的形式,
    但若每次都加1则可表达为i++ / i–

    C语言的各种数据类型都有自己的长度,计算操作符数用sizeof(),其返回C语言规定是只能是无符号整数(0和正整数),为了统一各系统返回值类型,定义了 size_t 类型来表示,故没有规定具体的类型:unsigned intunsigned long long等。括号内如果放的是表达式,则不会真实地计算。

    signed和unsigned:sign能表示正负数,unsign即无符号

    char不确定是否有无符号,取决于编译器的实现。大部分的情况char == unsigned char

    int默认是signed,且打印的占位符为%d。(unsigned打印占位符为%u)

    数据类型——模具 ,C语言中变量需要声明数据类型,若有给初始值的过程即初始化。无初始化的话不能让你用。已有初始化后又给值那就叫赋值。

    float num = 3.14f;

    全局变量在花括号外,局部变量在花括号内,局部值优先。

    除号 / 两端都是整数,即为整数除法(且结果也为整数-只有整数部分丢弃小数部分)

    负数取模的规则是,结果的正负号由第一个运算数的正负号决定

    连续赋值,从右往左赋

    单目操作符(++,–等),之前讲的符号中两边都要跟东西的是双目操作符

    环境配置

    《鹏哥C语言》中是用VS2022来教学的,还有关于scanf()函数的配置问题,我写到Gitee Wiki中了。

    but,我要强推CS50x课程对教学用IDE的解决方案!
    (国外的讲师深知教学应该更重于idea和实现的代码,而非前期的繁杂的环境配置)

    课程中使用了远程VSCode作为编辑器,并且云端已经全部搭建好C语言的环境了,开箱即用!
    这样的CodeSpace可以通过Github登录授权后拥有:https://cs50.dev
    (至于速度的话,你都能流畅在YouTube上看课了,同样网络环境下打开这链接,速度还是快的)

    对于编译的操作还简化了很多,编译一个hello.c只需下面两条命令

    make hello
    ./hello

    (后面课程Arrays中介绍了make实际上是clang的自动执行脚本,笔记)

    同时侧边栏安装了一个图标是一个爱quack叫的吉祥物鸭子的插件,点开一看,是个免费的AIChat!
    不过,它的回答只能是英文的哦~ 基本上是能看懂滴

    如下,这只鸭子的回答真的很喜欢quack🦆,也有可以在线使用的地方:https://cs50.ai/chat

    还有安装Docker,也许后面的课程还会教项目的上线吧。