C语言从零学习第一次笔记
2017-08-08 16:51
489 查看
第一个程序
我是在Code::Blocks 中写的程序。#include <stdio.h> int main(){ printf("Hello,World\n"); return 0; }
运行效果如下:
从第一行看:
(1)
“#include < stdio.h >” :这是编译预处理指令”# include”,这里是引入stdio.h ,这个系统的文件,stdio 是standard input & output 的缩写,翻译过来就是标准的输入输出。”.h”后缀的文件表示的是头文件
(header file),之所以这样叫是因为这些文件都是放在程序个文件模块的开头。
(2)
“int main() { … }” :定义主函数,main 是函数名,表示这个函数的类型是int 类型的。当主函数正常结束的时候返回一个int类型的值,这个值为0,当执行主函数过程中出现异常或者错误,
返回值是一个非0的整数。
好处是,程序员可以利用操作指令检查main函数的返回值,从而判断main函数是否已经正常执行。
(3)
printf();输出所指定的一行信息,这里可以调用这个函数是因为前面编译预处理了stdio.h这个头文件。(4)
从结果看:Process returned 0 (0x0) execution time : 0.125 s
Press any key to continue.
这两句话不是咱们带有的。这是自动输出的,告诉用户,如果想继续进行下一步,请按任意键。
像上图,如果我在按任意键,就会关闭这个窗口,并且回到程序窗口。
如何写注释
在C中,程序在进行预编译处理时候,会将每个注释替换为一个空格,一次在编译时注释部分不产生目标代码,对于程序的运行没有影响。
(1)
以 // 开始的注释。但只是表示单行。这种形式是在C99之后开始支持的。(2)
以 /* 开始,以 */ 结束。这种注释可以包含多行内容。第二个程序
#include <stdio.h> int main(){ int a,b,sum; a = 123; b =456; sum = a + b; printf("sum is %d\n",sum); return 0; }
运行结果:
分析:
(1)
这是一个求和的程序,运行main()函数,先定义三个int 类型变量,再给a、b赋值,然后采用运算符求和,并且将值赋值给sum,和Java语法类似。(2)
printf(“sum is %d\n”,sum);sum is 是用户希望输出的字符串形式。
%d中,d表示用“十进制整数”形式输出,在输出时候, 后面的sum就会代替%d
\n表示换行字符。
第三个程序
#include <stdio.h> int main(){ int max(int x,int y); int a,b,c; scanf("%d,%d",&a,&b); c = max(a,b); printf("max = %d",c); return 0; } int max(int x, int y){ int z; if(x>y) z = x; else z = y; return(z); ab50 }
发现在main()函数之外又定义了一个max 函数,下面进行解答:
(1)
int max(int x,int y); 对于被调用(在主函数之外的函数都可以称为被调用)函数进行声明。因为C中对于程序的编译是自上而下进行的,而,代码中max()函数放在了main()函数下面,
所以要进行声明,如果这两个函数换换位置,就不用这句话了。
只有先声明了,那么编译系统就知道max是什么了。
(2)
scanf(“%d,%d”,&a,&b);可以理解为是定义在stdio.h头文件中的读取输入的方法。
这里的作用是输入变量a 和 b。在括号中可以分为两部分,前面是指定输入的数据按什么格式输入。
后面是输入的数据准备放到哪里,即赋给那个变量,&在C语言中表示的是地址符,&a的含义是
变量a的地址。
执行scanf函数的效果是,从键盘读取两个整数,送到变量a和b 的地址处,然后把两个整形分别赋值。
如何在输入,如果你只输入一个值,那么如下:
只能这样输:
(3)
return(z)将z 的值作为max函数值带回到主函数中并且赋值给c。
总结
通过上述几个例子,可以说,简单了解了C,更加具体的以后会单独讲:(1)
一个程序有一个或多个源文件(.C文件)组成。一个源文件可以分为:
(1)预处理指令:
C编译系统在对源程序就行”翻译”之前,先有一个预处理器对预处理指令进行预处理。
如 # include < stdio.h > 将stdio.h 中内容读进来放在了# include 指令行中。然后
和后面的程序组成一个完整的源程序,有编译系统对于改源程序就行编译。
(2)全局声明
这点和Java类似,在方法中声明的变量,只在函数范围内有效。
全局变量,则在整个源文件范围内有效,但需要注意是,要在使用它之前声明,
因为C是自上而下编译。
(3)函数定义
一个C程序中可以理解为一个或者多个函数组成。其中一定有一个main函数,且只有一个。
一个小程序有一个源程序文件,在一个源文件中包含若干函数。其中一个main
一个大程序,可以使一个程序包含若干的源程序文件,每个源程序文件又有若干个函数。
在进行编译时候是以源程序文件为对象进行。
如下面代码
test2.h (自定义的头文件)
#ifndef _TEST2_H_INCLUDED_ #define _TEST2_H_INCLUDED_ int addsss(int a,int b); #endif // TEST2_H_INCLUDED
test3.h( 自己写的源程序文件,这里面是对于addsss方法的实现)
#include <test2.h> addsss(int a, int b){ return a+b; }
main.c(主源程序文件)
#include <stdio.h> #include "test2.h" int a,b,c; int main(){ scanf("%d,%d",&a,&b); c = addsss(a,b); printf("max = %d",c); return 0; }
上述三个实现的是:在test2.h中定义一个方法,在test3.c中写具体实现,在main.c中调用方法,但是只是调用方法,具体咋实现,系统自己会去找你的代码。
(2)
函数的组成函数的首部:函数名、函数类型、函数属性、函数参数名、函数类型
函数体:一般来说可以认为包含声明部分、执行部分、
(3)
程序都是从main函数执行的。(4)
程序中对计算机的操作是由函数中的C语句完成的(5)
在每个数据声明和语句的最后必须有一个分号。(6)
C语言本身不提供输入输出语句,它是由库函数scanf 和 printf函数完成Bug
由于我是使用Code::Blocks 来进行操作的,如图所示:一般默认的建立Projects 时候,是带有Sources文件夹,里面自带一个main.c文件。
但是我在add 那个test2.h文件的之后,在运行,显示:
no such file or diercery
这个情况就是.h文件没有导入进工程中。
点击Project(项目)->Build Options(生成选项)->Search Directories(搜索目录) 点击Add(添加)后选择你当前项目所在的文件夹,一定要手选,不要用默认的绝对路径。 系统提示“Keep this a relative path?”(保持相对路径么?) 然后确定 ok.
具体参考链接:http://blog.csdn.net/mrbourne/article/details/26349743
相关文章推荐
- c语言学习笔记1
- 学习笔记——线性表的动态分配顺序存储结构基本操作(C语言实现)
- C语言学习笔记
- C语言提高班学习笔记 lesson5 编译
- 《数据结构与算法——C语言实现》学习笔记——归并排序
- C语言学习笔记 逻辑结构关键字
- c语言学习笔记24之内存
- C语言学习笔记【结构体01】结构体变量与结构体数组
- C语言学习笔记(8)——第一次个人实战(YUV图像分割)
- C语言学习笔记7——union
- C语言学习笔记(四)——内存管理
- 【C语言学习笔记】终端下贪吃蛇游戏
- C语言学习笔记(4)
- C语言学习笔记--动态库和静态库的使用
- sqlite学习笔记10:C语言中使用sqlite之查询和更新数据
- C语言学习笔记(程序风格)
- db4o学习笔记(二)、第一次亲密接触
- 学习笔记4-C语言数组和字符串
- C语言学习笔记