当你开始学其他语言,回头看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
语句
行内注释用//
,多行的要用/* */
Python | C |
---|---|
elif | else if |
or | || |
and | && |
i+=1 / i-=1 | 可用左边的形式, 但若每次都加1则可表达为i++ / i-- |
C语言的各种数据类型都有自己的长度,计算操作符数用sizeof()
,其返回C语言规定是只能是无符号整数(0和正整数),为了统一各系统返回值类型,定义了 size_t
类型来表示,故没有规定具体的类型:unsigned int
或 unsigned 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,也许后面的课程还会教项目的上线吧。
评论 (0)