自问自答学习c语言(1)
整理学习过程和文档,每个blog10个问题。
问题1: 为什么分低级语言,高级语言之分。
机器指令: 00000010 machine instruction
机器语言: 00000010 00001010 指令的集合;型号不同的机器,机器语言不同
进化为-》
符号语言:ADD A,B symbolic language,需要软件把这些符号转化为机器语言,这个过程叫汇编assemble, 因此符号语言也叫assemble language.贴近计算机,型号不同的机器,汇编语言不同,又叫低级语言。只限专业人士使用。
再进化为-》》
高级语言: 不依赖于具体机器,并且符合人类的语言习惯。 比如打印 printf("................");同样需要翻译为机器语言,叫compile.高级语言的一句往往对应多条机器指令。
问题2:高级语言的主要分类。
主要分面向对象和面向过程的。c为面向过程的,c++为面向对象的。
问题3:c语言简要历史
1973贝尔实验室发明c,并改写unix. 1983出了个标准, 1989出了个标准,1999出了个标准。
问题4: 为什么加#include <stdio.h>
c语言不提供输入输出语句,内存操作语句等,这些都是由编译系统所提供的库函数实现的
#include <stdio.h> 此句表示从存放c编译系统的子目录中查找stdio.h文件,并包含,从而可以调用相应的输入输出语句。
问题5:c语言为什么经常用来编写系统软件。
能实现汇编的大部分功能,可直接访问物理地址。
问题6: 最简的main函数以及为什么这样写?
int main()
{
return 0;
}
int 为c99建议加上的; 设计时肯定会这样设计, 返回0表示成功,成功只有一样,返回非0表示失败,失败的原因可以有很多比如返回1,返回-1,返回2,是这种设计思想。
问题7 为什么对函数声明?
直接编译下面的代码会报c3861错误 identifier not found
法1 把声明去掉注释;法2 把定义提前;
同样道理,
#include <stdio.h>
int main()
{
printf("Please input two numbers, seperated by space \n");
int a,b;
// int myMax(int num1,int num2);//
scanf("%d %d",&a,&b);
int c = myMax(a,b);
printf("the max number between %d and %d is %d",a,b,c);
return 0;
}
int myMax(int num1, int num2)
{
int maxNum;
maxNum = num1>=num2?num1:num2;
return maxNum;
}
问题8 为什么有链接这一步?
.c源文件编译生成二进制.obj文件,但是不能执行,不同的.c文件生成自己的.obj,显然需要link所有的obj文件成为一个exe文件; 即使一个源文件也需要和编译系统的函数库链接。
问题9 有哪些常量?
(1)想到最简单的常量就是数字了; 如 1, 55, 50.2, 78.34e4, 43.22E3
(2)字符常量: 普通字符'1', 'a', '4','\n' 注意只是一个形状像数字4的图像字符,其表示方法为ASCII码,没有字符'44'. '\033' or '\x1B'代表ASCII码为27的字符,即ESC控制符。
(3)字符串常量: “hello world”
(4) #define PI 3.1415926
问题10 #define PI 3.1415926与const double PI = 3.1415926;区别?
一个是变量,一个是符号常量;一个占内存,一个不占内存;一个有类型,一个没有类型,一个一直存在,一个预编译后符号被替代。
摘自:drbinzhao的专栏
补充:软件开发 , C语言 ,