为什么要学C语言?
1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
总所周知,任何东西的盛行都只是一个阶段,语言也是如此。但是,C语言是个例外,一个矗立了半个世纪的语言,其中好坏,我想应该不难了之。
C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言,所以说学习C语言是进入编程世界的必修课。
//hello Cain_Xcy!
//想必学过其他语言的人都知道,所有语言都是hello开始的.
#include //头文件,这里不做介绍
#include
//argc:传入参数的个数,包括应用程序名字。
//argv:用于run时,把命令行参数传入程序。
int main(int argc,char* argv[])
{
printf("hello,Cain_Xcy!\n"); //双引号之间输入想要显示的东西
system("pause"); //系统函数,使小黑窗口暂停下来,不然就一闪而过
return 0; //返回值,后面会详细讲
}
C语言的具体结构
必不可少之主函数
C程序就是执行主函数里的代码,也可以说这个主函数就是C语言中的唯一入口。
而main前面的int就是主函数的类型.
printf()是格式输出函数,这里就记住它的功能就是在屏幕上输出指定的信息
return是函数的返回值,根据函数类型的不同,返回的值也是不同的。
\n是转义字符中的换行符。(注意:C程序一定是从主函数开始执行的)
良好编程习惯
一个说明或一个语句占一行,例如:包含头文件、一个可执行语句结束都需要换行。
函数体内的语句要有明显缩进,通常以按一下Tab键为一个缩进。
括号要成对写,如果需要删除的话也要成对删除。
当一句可执行语句结束的时候末尾需要有分号。
代码中所有符号均为英文半角符号。
程序解释——注释
经过注释了的代码编译器是不会运行的。
单行注释://
//printf("hello,Cain_Xcy!");
多行注释:/**/
/*
printf("hello,Cain_Xcy1!");
printf("hello,Cain_Xcy2!");
printf("hello,Cain_Xcy3!");
*/
有名有姓的C标识符
1.C语言规定,标识符可以是字母(A~Z,a~z)、数字(0~9)、下划线_组成的字符串,并且第一个字 符必须是字母或下划线。在使用标识符时还有注意以下几点:
2.标识符的长度最好不要超过8位,因为在某些版本的C中规定标识符前8位有效,当两个标识符前8 位相同时,则被认为是同一个标识符。
3.标识符是严格区分大小写的。例如Cain和cain是两个不同的标识符。
4.标识符最好选择有意义的英文单词组成做到"见名知意",不要使用中文。
5.标识符不能是C语言的关键字。想了解更多C语言关键字的知识。
变量及赋值
变量:程序运行(run)过程中值会变化的量,就叫变量。
变量占据内存的一定大小,使用变量之前一定要初始化。
变量赋值的两种方法:
1、先定义变量,再赋值。
#include
#include
int main()
{//定义一个整型变量a
int a; //先定义
a = 10; //再赋值
int b,c,d; //直接定义三个,分别赋值.
b = 10;
c = 10;
d = 10;
}
2、定义变量时就赋值。
#include
#include
int main()
{//定义了一个整型变量a,并给他赋值为10;
int a = 10;//定义变量就赋值(初始化)
//int b=c=d = 10; //error,这是不合法的。错误的写法。
}
基本数据类型
C语言中数据类型可分为四类:
基本数据类型,构造数据类型,指针类型,空类型。
最常用的整型(int)、实型(double,float)、字符型(char)。
注意:16位机器时,int是2字节,现在一般是32和64,所以是4字节或者8字节,大小分机器。
整型是指不带小数的数字:(int,short int,long int, unsigned int, unsigned short int,unsigned long int)
注:
int short int long int是根据编译环境的不同,所取范围不同。
而其中short int和long int至少是表中所写范围, 但是int在表中是以16位编译环境写的取值范围。
另外 c语言int的取值范围在于他占用的字节数 ,不同的编译器,规定是不一样。
ANSI标准定义int是占2个字节,TC是按ANSI标准的,它的int是占2个字节的。但是在VS里,一个int是占4个字节的。
浮点类型是指带小数点的数据:float、double、long double。
注意:C语言不存在字符串变量,后面会讲一种字符数组,效果与字符串一样。
#include
#include
int main()
{//char* 是字符指针,这里指向文字常量区,不可修改qi
int age = 10;
char* name = "Cain";
printf("%s今年%岁了\n",name,age); //输出:Cain今年10岁了
}
注意:格式化的个数一定要与输出项一致,不能多也不能少。
#include
#include
int main()
{ //整型
int a =10;
int b = 20;
printf("a=%d,b=%d\n",a,b);
//实型
double c = 20.1;
printf("c=%f\n",c);
//字符
char d = 'M';
printf("M=%c\n",d);
//字符串常量
char* e = "hello,Cain!";
char* f = "程序运行中";
printf("e=%s\n",e);
printf("f=%s\n",f);
getchar(); //类似system("pause");使小黑窗口停下来
return 0;
}
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:
#define 标识符 常量值
#include
#include
#define MAXSIZE 1024 //定义一个宏常量.MAXSIZE在程序中就等价于1024,注意,后面没有分号。
int main()
{
char buffer[MAXSIZE];
//等价于: char buffer[1024];
return 0;
}
注意:符号常量(宏常量)不能被改变。编译初期就已经被定义好了,预处理的时候
#include
#include
int main()
{
char c = 'a';
char a = 'b';
//强制转换为整型
printf("i = %d\n",(int)c);
//转换表达式,都加括号,不然是临时转换一个值。
int ret = (int)(c+a);
}
注意:强制转换后的结果不遵循四舍五入原则!
#include
#include
int main()
{
int a = 10;
int b = 5;
double tmp = 2.0;
double temp;
int c; //不赋值,只是定义变量,前面有讲。
//加法运算符
c = a + b; //result:15
//减法运算符
c = a - b; //result:5;
//除法运算符(very special)
c = a / b; //result:2 第一种情况:整数相除,结果为整数。
temp = a / tmp; //result:5.000000 第二种情况,浮点类型相除,或者浮点类型与其他类型搭配相除,结果为浮点类型,默认f打印时,默认打印小数点后6位。
//乘法运算符
c = a * b; //result:50
//求余运算符%(very special)
c = a % b; //result:0 余数为0 整数相余
10.0 % 3; //error,原因:表达式必须是整型
//自增运算符
a++; //当前行结束result:a = 11;
//自减运算符
a--; //当前行结束result:a = 10; PS:因为前面++了一次,所以这里是10;
//当然自增自减运算符还分前置加加,后置加加,前置减减,后置减减,只有配合内存(指针才会有讲的,所以留到指针我们继续探讨,暂时介绍到这里,知道有这么个东西即可。)
system("pause");
return 0;
}
Ps:C语言中没有乘方这个符号,也不能 × 和 ÷; * 与 / 代替了他们
3. 赋值运算符:
C语言中赋值运算符分为简单赋值运算符与复合赋值运算符两种,代码如下:
#include
#include
int main()
{
//1.简单赋值运算符
int a = 10;
int b = 2;
int c;
c = a; //简单赋值
//指针:(后面会说,简单提一下)
int *p = &a; //地址赋值,都是简单的赋值.
//复合赋值运算符
b += a;
b = b + a; //两种写法一样,上面是缩写,也叫复合运算符,还有*=,/=,-=
system("pause");
return 0;
}
#include
#include
int main()
{
int a = 10;
int b = 20;
if( a < b)
{
printf("表达式值为1,即真!");
}
else
{
printf("表达式值为0,即假!");
}
//特别注意比如<=,!=这种组合符号形成的运算符,中间不能有空格
system("pause");
return 0;
}
逻辑与(例):5>3 && 3<1 参加运算的两边同时为真时,结果才为真。否则为假
简记:有假则假,同真才为真。
C代码片段:
int a = 10;
int b = 20;
if(a > 5 && a < b)
{
printf("真!");
}
else
{
printf("假!");
}
逻辑或(例):5>3 && 3<1 参加运算的两边同时为假时,结果才为假,否则为真
简记:有真则真,同假才为假。
C代码片段:
int a = 10;
int b = 20;
if(a > 5 || a > b)
{
printf("真!");
}
else
{
printf("假!");
}
逻辑或(!):5>3 && 3<1 此运算符是作用一方,相当于数学中的相反数。
简记:原假我为真,原真我为假。
C代码片段:
int a = 10;
int b = 20;
if(!(a > 5) || a > b)
{
printf("假!");
}
else
{
printf("真!");
}
三目运算符的标准格式为:表达式1 ?表达式2 :表达式3
a>b?c:d
解释:如果a>b 结果为真,则语句结果为c ,如果a>b结果为假,则结果语句结果为d
#include
#include
int main()
{
int a = 10;
int b = 20;
//下面给c用三目运算符的初始化
int c = a > b ? a : b; //result: 20
system("pause");
return 0;
}
可能这篇文章写到这里就只能先放弃了,发现对于整理的结构有所疏漏,后面整理好了之后,做一个脑图,结合脑图来写一个完整的。