我是先学也是主要学的Java,目前需要学习c语言应对二级考试。以下记录c语言中的重点和与Java的区别。
1.C程序是先由源文件.c经编译生成目标文件.obj,然后经过连接生成可执行文件.exe。
2.标识符的命名规则:
- 只能由字母数字或下划线组成
- 第一个字母必须是字母或下划线,不能是数字
3.数据类型
char char a = 'a';
short short b = 12;
int int c = 128;
long long d = 1120;
float float e = 3.2;
double double f = 3.14;
八进制整型:以数字0开头,基本数字范围0-7
八进制转义字符:\ddd,1~3位八进制数表示所表示的一个ASCII字符
十六进制整型:以数字0和x开头,基本数字范围是0·9、A~F
十六进制字符转义:\xhh,1~2位十六进制所代表的一个ASCII字符
指数形式:e前必须有数字,e后必须为整数
字母与字符的转换
4.运算符和表达式
- 算术运算符:+、-、*、/、%
- 关系运算符:>、>=、==、!=、<、<=
- 位运算符:>>、<<、~、&、|、^
- 逻辑运算符:!、||、&&
- 条件运算符:?=
- 指针运算符:&、*
- 赋值运算符:=
- 逗号运算符:,
- 字节运算符:sizeof
- 强制运算符:(类型名)(表达式)
%是取余运算符,两端必须是整数,13%5的结果是2
/是除法运算符,两个整型相除,结果为整型,即12/5的结果为2;如果两个浮点数相除,结果为浮点数,12.0/5.0,结果为2.4
自加、自减运算符:++在前,先运算后取值;++在后,先取值后运算。--同理。
int a=5;
int b=a++;
int c=++a;
int d=a;
结果为:a=7,b=5,c=7,d=7
- 按位与&:若两个相应的二进制位都为1,则该位的结果为1,否则为0
- 按位或|:两个相应的二进制位中只要有一个为1,则该位的结果为1,否则为0
- 按位异或^:若两个二进制位相同,则结果为0,不同则为1
- 按位求反~:即0变1,1变0
- 左移<<:将一个数的二进制位全部左移若干位,低位补0
- 右移>>:将一个数的二进制位全部右移若干位,原来是0就补0,是1就补1
5.输入输出
printf(格式控制,输出表列);
scanf(格式控制,地址表列);
6.选择
if(){}
switch(){}
7.循环结构
while与do{}while();
for(){}
8.数组
一维数组与二维数组
9.字符串
10.函数
11.指针
12.预处理
13.结构体和共用体
14.链表
15.文件
函数
在c语言中,自己编写的函数最好定义在main函数前面,否则需要在main函数前定义需要的函数。
预处理
指针
指针是一种数据类型,专门用于存放数据的内存地址。定义格式:
数据类型 *指针变量名 = 初值;
数据类型不是指针变量中存放的数据类型,而是它将要指向的变量或数组的数据类型。也就是说如果定义成int型数据的指针变量,将来只能用来指向int型的其他变量或数组。
int a = 5; int *p = &a;
float f1,f[10];
float *p1 = &f1;
float *p2 = f;
先定义了整型变量a,然后定义一个指向整型变量的指针变量p,并赋初值为事先定义的变量a的地址。
变量p2中存储着f数组的首地址。
指针变量中只能存放地址。
1.*是取值符,&是取地址符号。p表示一个变量a的地址,a表示一个变量。*p与a是等价的,p与&a也是等价的。
2.指向变量的地址需要在变量名前加取地址符&,而指向数组的地址直接用数组名,数组名表示数组的第一个值的地址,即f==&f[0]。
3.p+i和f+i表示f[i]的地址。
*(p+i)和*(f+i)表示f[i]的值。
*(p+i)与p[i]同样等价
4.用数组名作为函数参数,表示整个数组
average(score);//传递数组参数 printf("%f\n",aver);//输出数组参数
用数组做参数时,可以在函数中改变数组的值
5.用数组元素作参数,与一般的变量无区别
6.
int *x, *y, *i, *j, a = {1,2,3}; y = a;//将数组a的首地址赋给指针变量y x = y;//将y的值也就是a的地址赋给指针变量x j = a +1; *i = *j;//将x的值也就是2赋值给i
7.字符串与指针
char *p = "abcd"; //判断p指针所指向的数组中的元素是否为字符串结束标记 while(*p!='\0'){}
结构体
定义结构的一般形式:
struct 结构名{ 成员表列 }; //实例1 struct student{ int num; char name[20]; char sex; double score; }; struct student boy1,boy2; //实例2 #define STU struct student STU{ int num; char name[20]; char sex; double score; }; Stu boy1,boy2; //实例3 struct student{ int num; char name[20]; char sex; double score; }boy1,boy2; //实例4 struct{ int nm; char name[20]; char sex; double score; }boy1,boy2; //实例5 struct date{ int month; int day; int year; }; struct{ int num; char name[20]; struct date birthday; float score; }boy1,boy2;
枚举类型
定义一般形式
enum 枚举名{枚举值表}; //实例 enum weekday {sun,mon,tue,wed,thu,fri,sat}a,b,c; a=sun;//等价于a=(enum weekday)2; b=mon; c=tue;