目录
什么是c语言程序?
一.一个c语言程序大体框架由哪几部分组成
#include | 预处理器指令 |
int main() | C语言中的主体 |
function a() | 语句(函数构造块) |
function b() | 语句(函数构造快) |
语句种类 |
|
二.认识c语言
数据类型
- int 占用4个字节的内存 整形 —— %1d占用一个变量
- short 占用2个字节的内存 短整型
- char 占用1个字节的内存 字符数据类型 ——%c
- long 占用4个字节的内存 长整型
- long long 占用8个字节的内存 更长的整形
- float 占用4个字节的内存 单精度浮点数 ——%.1lf 保留一位小数
- double 占用8个字节的内存 双精度浮点数
变量和常量
局部变量和全局变量,局部变量优先
- 字面常量
- const 修饰的常变量
-
#define 定义的标识符常量
-
枚举常量
转义字符
- \? 主要为了防止三字母词
- \'
- \"
- \\ 反斜杠
- \a 警告蜂鸣
- \b 退格符
- \f 进纸符
- \n 换行
- \r 回车
- \t 水平制表符
- \v 垂直
- \ddd 八进制数字
- \xdd 2个十六进制数字
注释
语句(循环语句和选择语句等六种语句)
函数——(大都由圆括号组成,花括号代表函数的开始和结束)
例如:主函数 int main()等等,不仅如此,函数也可以创建和被调用,常用来调用代码较多的函数 体。
数组
char arr2[这里为有几个元素]={这里为存放的元素}注意存放的元素可以为任何类型但是都是相同类型,并且下标是从0开始
例如:
#include <stdio.h>
int main()
{
int arr[5]={1,2,3,4,5};
printf("%d",arr[4]);
return 0;
}
这样我们就打印出了一个5
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
char* arr[] = { "a","b","c" };
printf("%s", arr[0]);
return 0;
}
这样就打印了一个a
char arr2[]={"a","b","c"}没有0所以他会一直检索 随机找到/0,所以他的字符长度是随机的
char arr1[]="abc" 这个是默认有/0
操作符
算术操作符 + - * / %
移位操作符
>> << (按照二进制移位)
位操作符
& ^ |
赋值操作符
= +=(相当于i=i+1) -= *= /= &= |= >>= <<=
单目操作符
!逻辑反 常见!=为不等于
- 负值
+ 正值
& 取地址
sizeof 计算操作数的类型长度(以字节为单位)
++ 前置 b=++a(相等于a=a+1),先a自身++,再使用. 后置++ ,b=a++,先使用(也就是赋值 给b),再a自身++(赋值后a自增)
-- 同理
条件操作符
exp ?exp2:exp3(m=(a>b?a:b)) 如果为真表达式2计算为假则表达式3计算
exp为表达式
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0, b = 0;
scanf("%d %d", &a, & b);
if(a>b? printf("%d", a) : printf("%d", b))
return 0;
}
逗号表达式
例子d=(a=b-3,b=a+c,c=a-b,a=c+3)从左向右依次计算,但是最后结果以最后表达式为主
下标引用操作符
arr[10]={1,2,2,4};
printf("%d",arr[3]);这里的3为下标
常见关键字
static 修饰局部变量时候改变了变量的存储类型
普通的局部变量是存储在栈区
被static修饰的变量是存储在静态区的
存储在静态区的变量,出了作用域不会销毁,依然存在,所以静态变量的生命周期就是程序的 生 命周期,程序结束的时候,静态变量才会回收空间
#define 定义常量和宏
1.define 定义标识符常量
#define MAX 1000
2.define定义宏
#define ADD(x, y) ((x)+(y)) 最后一个圆括号为内容 中间是圆括号的宏的名字
注意宏和函数的区别
函数的参数有具体的类型,而宏没有,宏的内容主要在最后一个括号内
指针
指针变量 —— 简单描述为 类型* 变量 = &变量
#include <stdio.h>
int main()
{
int a = 0;
int* aa = &a;
printf("%d", *aa = 1);
return 0;
}
由上看出是输出1,int* aa = &a 是解引用符号指向int从而找到a的地址,
而*aa是找到a这个变量相当于 a=1,也就是把1赋值给*aa(a),从而输出a
注意数据在内存中是倒着放的 (涉及到原码,反码,补码)
原码就是二进制位,反码就是原码取反,补码就是反码加1
其中的缘由到指针时再去细学
指针变量是4字节(32位)和8字节(64位)——(基本不会改变)
指针变量与函数
void test(double* pd)
{
*pd=5.6;
}
test(&d) 把这个&d传给*pd(指针变量)
结构体
struct 名称 变量
struct stu{}是类型相当于int