C语言简单概述

一.四大常量
1.面值常量
直接定义数字,字符等;
20 10
2.const类型
int const n = 10;
3.define宏定义
#define Size 10
4,.枚举常量
enum male{
man
woman
};
二,数据类型
一般分为有整型,字节类型,浮点类型。
一般有:
char,short , int , float,double,long,longlong。
一般重要表示为:
int (4个字节) 范围无符号(0 ~ 42亿9七万) 有符号(-21亿 ~ 0 和 0 ~ 21亿)
char (1个字节) 范围无符号(0 ~ 255) 有符号(-128 ~ 127)
short (2个字节) 范围无符号(0 ~ 65536) 有符号(-32767 ~ 32678)
double (8个字节) 范围 1.7 10^308
三,数组
数组就是一系列有序列的数据集合。
在这里记住,数组和指针没有关系,只是在c中数组可以隐式类型转换为指针。
数据可以用来表示字符串。
数组和字符串的区别在于:字符串有‘\0’结束符。
四,条件结构
1.顺序结构
2,循环结构
(1)for循环
for(表达式1;表达式2;表达式3){
}
一般表达式2为判断结束语句
(2)while循环
while(判断条件){
}
(3)do while循环
do{
}
while(判断条件)
3.选择结构
(1)if else
if(判断条件){
}
else{
}
2.switch(一般不建议使用)
switch(表达式)
case 整型数组1:语句1;

define:语句n+1;
五运算符
(1)|:按位或,两个数只要有一个是1就是1,例如8|5,8的二进制数是00001000,5的二进制数是:00000101,8|5的值
就是00001101,十进制为13,位运算或其实可以看成将两个数不一样的地方和一样的地方提出来,因为1|1等于1,
所以说只提出来了一半,两个1最后成了一个1,所以说只提出来一半
(2)&:按位与,两个数都为1(真)结果才为1(真),否则为0(假),例如8&5,8的二进制数是00001000,5的二进制
数是:00000101,8&5的值为00000000,位运算符&其实可以看成是将两个数一样的地方提出来一半,和或运算一样
1&1之后就只剩下了一个1,对于两个数来说,也只算提出来了一半
(3)~:按位取反:就是遇到1将他变成0;把0变成1就好,计算一个负数的十进制数是多少时,就将他按位取反再加1转化
成十进制就好
(4):按位异或:两个数不一样就为1,否则为0,例如85,8的二进制数是00001000,5的二进制数是:00000101,8^5的
值就是00001101,00001100,位运算符异或可以看成是将两个数不一样的地方提出来。
(5)<<按位左移:将二进制数向左移右值(位运算符右边的数)数的位,右边(低位)补0,相当于将原数乘2,对几进制
数操作就相当于乘以多少进制,如果对八进制数操作就相当于乘以8,对十六进制数操作就相当于乘以16,例如17
的二进制数是00010001,左移之后:00100010,换算成十进制数就是34,相当于17
2,17的八进制是021,左移之后:210
左移一位之后相当与乘以8,210的十进制数就是136等于17*8。
(6)>>按位右移:将二进制数向右移右值(位运算符右边的数)数的位,左边补符号位,相当与除法,和按位左移一样,是
多少进制就除以多少进制,存在整除问题,结果向零靠近
还要运算时注意运算符的优先级。
六.函数
函数就是用来完成一定功能的。
(1)分类
库函数
c函数库自带的函数
— 主函数–
int main() // 主函数
— -数学函数 在math.h–
double sin(double x) //求正弦函数
double fabs(double x) //求绝对值函数
----文件型函数 —
int feof(FILE *p) //是否文件末尾函数
void rewind(FILE *p) //文件定首位函数
long int ftell(FILE *p)//文件指针位置函数
FILE *fopen( “文件名称”,“文件打开方式”) //打开文件函数
fclose(FILE *p) //文件关闭函数
int fscanf(FILE *P,“格式字符串”,类型 类型名称) //格式化读函数 将数据从文件中读取到类型名称中
int fprintf(FILE *p,“格式字符串”,类型 类型名称) //格式化写函数 将数据从出入框中读取到文件中
int fputc(FILE *p, 类型 类型名称) //将字符串写到文件中
int fgetc(FILE *p) // 将数据从文件中写到字符中
–字符函数—
int putchar(int c)//将字符串输入到控制台上
int getchar()//字符写函数
–输入输出函数–
int printf(“格式输出字符串”,类型参数名);
int scanf(“格式输入字符串”,类型参数名地址);
—空间函数–
void *malloc(size_t size) //申请空间函数
void *calloc(size_t size,size_t nblocks) //申请空间函数,并初始化为0
void free(类型) //释放空间函数
自定义函数
(2)格式:
返回值类型 函数名(参数列表,…){

/*
函数功能
/
return [变量名]; // 是否需要写变量名取决于返回类型
}
(3)调用
函数调用的一般形式为
函数名(实参表列);
如果是调用无参函数,则"实参表列"可以没有,但括弧不能省略。如果实参表列包含多个实参,则个参数间用逗号隔开。实参与形参的个数应相等,类型应一致。实参与形参按顺序对应,一一传递数据。但应说明,如果实参表列包括多个实参,对实参求值的顺序并不是确定的,有的系统按自左至右顺序求实参的值,有的系统则按自右至左顺序
七.指针
1.一级指针
其实指针指的就是变量中内存地址,在32位中指针变量占4个字节,而在64位中占8位字节。
2.二级指针
二级指针就是指向一级指针所指向变量地址,他和一级指针所占内存字节数相同,所以,多级指针依次退出。
3.指针和数组
指针和数组其实并没有关系,但是在c中数组可以隐式类型转换为指针,也就间接产生关系
4.空指针null和void指针
空指针:当把一个空指针常量转换为指针类型时,所得到的结果就是空指针。空指针常量是一个值为 0 的整数常量表达式,或者是一个 void
类型的表达式。在头文件 stdlib.h、stdio.h 以及其他头文件中,宏 NULL 被定义为空指针常量。
void指针:指向 void 的指针,或者简称为 void 指针(void pointer),是类型为 void* 的指针。因为没有对象类型是 void,所以 void* 被称为万能指针类型。换句话说,void 指针可以代表任何对象的地址,但不代表该对象的类型。若想获取内存中的对象,必须先把 void 指针转换为合适的对象指针。
八.结构体
(1)先来看看结构体的基本概念:结构是一些集合的值,这些值称为成员变量,每个成员变量可以是不同的值。
结构体的声明:
struct person
{
char name[20];
short age;
char sex[2];
}p;
(2)结构体内存对齐规则:
1.第一个成员变量的偏移地址为0;
2.其他成员变量要默认对齐到对齐数的整数倍地址处,对齐数=编译器默认大小和该成员变量之间的较小值。VS中编译器默认的对齐数大小是8,Linux中的默认值为4
3.结构体总大小必须是最大对齐数的整数倍。
4.如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数的整数倍。
(3)结构体还可以运用于创建链表。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值