这个系列文章将会持续更新,有需要可以关注我
日本马上要开始新一个学年了,很多新生还有一个多月就要步入大学生活了,在日本学习计算机的留学生们经常会遇到一个问题,就是计算机中的专有名词太多,而且多为片假名,难记还不容易理解。作为传说中的热心学长,一想到之后教学弟学妹们的苦逼担子就感觉肩膀好痛,遂写了这个篇文章,帮助学弟学妹们不受语言的限制,快速学好C语言。如果没有基础的话,建议在学习的过程中阅读,完全0基础的话有些东西会感觉到生涩难懂。
下面将列出一些常用的编程语言(C语言)中的名词及解释。
ソースプログラミング
源代码,是英语source program的直译。
ソースファイル
源文件,是英语source file的直译。在C语言中通常指【.c】、【.cpp】(c )作为尾缀的文件。
コンパイル
编译,是英语compile的直译。通常指将高级语言翻译成更低级语言的过程,一般来说将高级语言(我们所书写的代码)转换为机器码的整个过程称为编译。
注:汉语中C语言编译器编译时,代码预处理之后,将代码翻译成汇编的过程也被称之为编译,因为同样是从高级到低级的过程。
リンク
链接,是英语link的直译。通常指将各个目标文件(源文件等)和库文件链接起来。在C语言编译器中,链接是汇编之后的一个步骤。
診断メッセージ
诊断信息,英语为dignostic message。诊断信息是编译器为我们查找代码中的错误提供的重要工具,可以根据诊断信息的提示来修改代码。
注釈(コメント)
注释,英语为comment。注释是为了在代码中记录某些信息或提示,避免自己或他人以后难以理解代码。在C语言中 \\ 代表单行注释,也就是\\之后的一整行都会被编译器无视。\* 内容 *\代表多行注释,里面的内容无论多少行,只要是在\*和*\之间的,都会被编译器无视。例如:
int a;//从这往后会被注释 但到这里就不会被注释了,在编译器中会报错 /* 这之间的 无论多少行都会被编译器无视 */
関数
函数,英语为function。个人感觉看function更容易理解,function是功能的意思,前期理解为一个函数就是一个功能。例如:
int main(){ printf("hello world"); }
其中main是一个函数,也是我们程序的默认主入口。printf也是一个函数,printf的功能就是将内容打印至屏幕。
如果难以理解,可以只记住“関数就是功能的意思”就可以了。
メイン関数
主函数,英语为main function。main函数是程序的主入口,在前期我们的代码都会写在main函数内。main函数就像一个大客厅,去往其他房间都需要经过main,当然后期可以通过一些操作更改为其他函数。
関数呼出し
调用函数,英语为function call。意思就是使用某个函数的意思。例如
int main(){ printf("hello world");//我们在这里调用了printf函数,向屏幕输出了hello world }
実引数
实参,英语为argument。也就是真实的参数的意思,指的是被函数调用的具体的任何值,与其相对应的就是形参。实参和形参之后会再讲一遍,前期有一些不太好理解。
前期先用前面说的printf举一个例子。
printf("%d",20 5);
这里面"%d"是一个实参,20 5是另一个实参。%d的意思后面会讲到,前期先大体了解一下就好了。
セミコロン
分号(;),是英语semicolon的直译。在C语言中分号代表一段语句的结束(这也是很多程序员梗的由来),当然也有类似预处理指令是不用分号结尾的特例,在后面会讲到,现在只要知道セミコロン代表分号即可。
定数
常量,英语为constant。常量故名思意,就是一经更改就无法改变的量。在C语言中可以使用预编译指令#define和const修饰符来定义常量,常量在定义时必须被赋值。例:
#define CONSTSNT 10 int main(){ const int constsnt=10; }
虽然都可以用来定义常量,但这两种方法其实是有区别的,前期只要知道有区别即可。
ps.是不是发现常量的定义事实上就是常量的英文的前半部分呀,这也是为什么我一直标注英语的原因啦,编程语言里很多关键字其实都是英语单词或英语单词的一部分。
変数
变量,英语为variable。和上面的常量相反,变量是可以改变的,可以把变量当成一个盒子,我们可以向这个盒子里装数据,数据类型就是这个盒子的标签,变量名就是这个盒子的名字,每个盒子只能装标签对应的类型,而数据范围就是盒子的大小。
语法为:
数据类型 变量名;//仅定义 数据类型 变量名=值;//定义并初始化 //如果前面已经定义了一个变量 变量名=值;//可以通过赋值的方式更改原来的值或初始化。
C语言中常见的数据类型有int(整数型)、float(单精度浮点型)、double(双精度浮点型)、char(字符型)等,float和double又被称为实数类型。数据类型具体在后面会讲。
定义变量例子:
int a=5; int b; double c=5.66; float d=7.88f;//float类型后面必须加f或F,不然会默认为double类型 char e='E';//char类型只能储存一个字符,字符需要用''来包裹。
宣言
声明、定义,英语为delaration。告诉编译器你创建了一个函数或变量的过程叫做声明。
int a;
这就是声明。
初期化
初始化,英语为initialize。创建了一个变量后,这个变量是没有内容的,直接拿来使用可能会报错(学习scanf时应该会经常遇到)。所以我们需要为创建的变量赋一个初始值,这个过程就是初始化。
例:
int a=0;//在声明的同时进行初始化 //也可以先定义,不初始化,在需要的时候初始化 int b; b=0;
変換指定
格式化说明符,英语为conversion specification,在前面稍微提到了%d,%d就是一个格式化说明符。C语言有各种数据类型,例如int、float、double、char等,格式化说明符是为了让编译器可以准确识别这些数据类型,将接收到的变量,以格式化说明符的类型进行输出输入。下面是一些常用的格式化说明符在printf的情况下的说明(VS2017):
%d对应接收整数,也就是int、short、long等。
- 如果接收小数会输出一些意想不到的数字;
- 如果接收字符(char类型)则会打印出字符的ASCII码;
- 如果接收字符串(char*类型)则会输出一些意想不到的数字;
- 如果接收布尔值中的true则会打印出1,如果接收布尔值中的false则会打印出0。
- 如果接收null与false相同。
%f对应接收单精度浮点型(实数、小数),也就是float。很多人误以为float可以储存6位小数,但其实float最大只能储存6位小数(7个有效位),如果整数部分有6位则小数部分会无法精确储存(前两位小数在部分情况下是正常的)。
- %f如果接收整数、字符、字符串、布尔值、null等则会打印出0.000000。
%lf对应接收双精度浮点型(实数、小数),也就是double。double拥有16位有效位,%lf中的l代表long的意思,长浮点型。其余与%f相同。
%c对应接收字符(单个字符,被' '包裹),也就是char。
- 如果接收整数、小数、字符串,将什么都不输出。(整数的情况下如果是在ASCII的序号范围内的,则会输出ASCII对应的字符,)
- 如果接收布尔值的话,因为布尔值中true代表1,false代表0,所以会输出ASCII对应的字符,true是笑脸(多半无法显示),false是空格。
%s对应接收字符串(多个字符,被" "包裹),也就是char* (如果学过C#之类的就相当于string)。
- 如果接收除了false、0、'\0'以外的任何值,在Release的情况下执行会卡在控制台,无法通过回车退出,只能手动关闭。(因为字符串类型需要有\0做结束符,只要没有遇到\0就不会结束)。
- 如果接收false、null、0、'\0',则会在控制台输出 (null) (在vs2017的情况下),因为这四个的值本质其实都是0,所以相当于控制台只接收到了一个结束符,内容为空。
文字列(文字列リテラル)
字符串,英语位string(string literal)。代表多个字符组成的一串文字,在C语言中字符串需要包裹在" "内,且以\0结尾(编译器会自动加上,只要在字符串数组最后留一个位置即可)。
例:
char str[50]="xyz";
这里xyz就是一个字符串。
書式文字列
格式字符串,英语为format string。其实可以理解为带有格式说明符的字符串,通常出现在printf内。(这个只是一部分意思,因为日语和汉语的差异,在这里先讲这一部分)
例:
printf("这是一个数字 %d \n");
其中"这是一个数字 %d \n"就是格式字符串。
拡張表記
转义字符,英语为escape sequence,可以理解为用一些规定好的符号来输出原本无法输出的字符。比如我们比较常见的\n(换行),还有上面提到过的\0。其实本质都是打印ASCII字符表的字符来实现特殊功能。
其实C语言只要掌握了编程思维,学习起来就很轻松了,包括学习其他语言进度也会变得很快,我之后也会持续更新相关系列,想要学习的可以关注我,以免走丢哦
注:本文中日语名词均出自《新・明解C言語 入門編》ーー柴田望洋
版权所有,转载请私聊我
,