笔记——初识C语言

1 什么是C语言
一句话:人和计算机交流的语言。
2 第一个C语言程序
如何使用VS2019并创建空项目、源文件
int 整型 printf 打印函数(是C语言标准库中提供的一个库函数)
运行: ctrl+F5
可以在newc++file.cpp 这个文件中加入:#define _CRT_SECURE_NO_WARNINGS 1
3 数据类型
>sizeof 是一个操作符,是计算变量的大小的
>计算机常见的单位:bit byte KB MB GB TB PB 
>类型的使用
创建变量时同时给一个初始值 例如int m=0
4 变量、常量
4.1 定义变量的方法
4.2 变量的命名
只能由字母(包括大写和小写)、数字和下划线( _ )组成。 
不能以数字开头。
长度不能超过63个字符。 
变量名中区分大小写的。 
变量名不能使用关键字。
4.3 变量的分类
1、局部变量
2、全局变量
第二个代码
scanf 库函数 用于从键盘上接收数据 
&取地址 
\n换行 
%d一个十进制的整数
4.4变量作用域和生命周期
4.5 常量
C语言中的常量分为以下几种:
字面常量
3 ;100 ;3.14; 'a' ;"abcdef"(字符串)都是字面常量(不能改的)
const修饰的常变量
常属性——不能改变的属性 。const int num=200 
使用const修饰后不能被修改,具有常属性,const限制num不能被修改。
#define定义的标识符常量
定义符号(一般放在全局范围)
#define M 100
int main()
int arr[M] = { 0 };
printf("%d\n", M);
return 0;
}
枚举常量(一一列举)
5 字符串+转义字符+注释
5.1 字符串
”hello bit .\n"
这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符 串。 注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串 内容。
>声明和定义
写在前面 int a = 10 定义
如果定义放在后面,而前面又想使用,就需要声明(有这么一个变量)
%s 打印字符串  
一直要打印到\0 才停止,如果没有结束标志则会出现随机值。
strlen 计算字符串长度
5.2 转义字符
ASCII 码
5.3 注释
6 选择语句
if 语句 选择 
else
7 循环语句
for 循环
while 循环
do while 循环
8 函数
9 数组
1、数组的概念—数组中可以存放一组相同类型的元素
2、数组的创建和初始化
  int arr1[10] = {1,2,3,4,5,6,7,8,9,10};
  int arr2[10] = { 1,2,3,4,5};//不完全初始化,剩余的默认初始化为0
  char ch[5] = { 'a  ', 'b', 'c' };//不完全初始化,剩余默认初始化为\0
  int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
3、数组下标从0开始
10 操作符
算数操作符
+ - * / %
移位操作符
>>   <<
位操作符(和二进制有关,放到后面去讲)
& ^ |
赋值操作符
=   +=   -=   *=   /=   &=   ^=   |=   >>=   <<=
int a = 0;//初始化,创建变量的同时给一个值,这叫初始化
a = a + 5;
a += 5;
a = a * 10;
a *= 10;
单目操作符
int a = 100;
int b = (a++); // 后置++,先使用,后++
int b=a,a=a+1;   (a=101,b=100)
int b = ++a;// 前置++,先++,后使用
a=a+1,b=a;   (a=101,b=101)
int b = a--;
int b = a,a=a-1;
int b = --a;
a=a-1,b=a;
强制类型转换
int a = (int)3.14;  强制转换为整型,只取整数部分
关系操作符
一个等号 赋值,两个等号,判断相等
逻辑操作符
&& 逻辑与      &&两边同时为真才为真
| |    逻辑或      | |两边同时为假才为假
条件操作符
exp1?exp 2:exp3
可简化if else 语句
m=( a>b ? a  : b )
如果语句1(a>b)成立,执行语句2(m=a),如果a>b为假,执行语句3(m=b)
int arr[10] = {1,2,3,4,5,6,7,8,9,0};
printf("%d\n", arr[4]);    //[  ]下标引用操作符
()函数调用操作符
11 常见关键字
auto 局部变量 自动创建自动销毁
循环 break 
分支 if switch case break
EOF 文件结束标志 end of file
while (scanf("%d", &a) != EOF)
scanf函数读取失败的时候返回EOF,如果读取正常,返回的是读取到的数据的个数
11 常见关键字
1、register——寄存器
建议编译器把变量放进寄存器
register int a = 10
2、typedef——类型重命名
(此处查询代码)
unsigned int (无符号)
3、static
1)修饰局部变量
0<10 进来,调用一次test函数,i++=1,继续调用,循环执行10次
a是局部变量,自动创建自动销毁,输出结果:10个1
如果变成static int a = 0, 输出结果:1-10,这是因为 static修饰的局部变量生命周期被延长了(作用域不变)
本质上: static的修饰改变了局部变量的存储位置,因为存储位置的差异,使得执行效果不一样。
内存被划分为几个区域:堆区、栈区、静态区。
栈区堆放局部变量、函数参数等临时变量,堆区用来动态内存分配(malloc、calloc、realloc、free)
静态区用来存放静态变量和全局变量,放在静态区的数据创建后,直到程序结束才释放。
2)修饰全局变量
extern 声明外部符号(使用其他源文件中定义过的符合)
全局变量本身是具有外部链接属性的,但是如果全局变量被static修饰,这个外部链接属性就变成了内部链接属性,这个全局变量 只能在自己所在的源文件内部使用,使全局变量的作用域变小。
3)修饰函数
同上,使外部链接属性变成内部链接属性。
头文件一般包含:类型的定义、包含其他头文件、函数的声明,不会放函数定义 
12  #define 定义常量和宏
几种max的定义方式
宏的名字:MAX, 宏的参数x , y , 宏体(x>y?x : y)
一般来讲,宏用来处理非常简单的逻辑,复杂的用函数来处理
13  指针
13.1 内存
内存是计算机上的一种存储空间 ,程序运行的时候会载入内存,程序中如果有数据需要存储,也会申请内存空间。
问:如何有效的使用内存?
把内存空间划分为内存单元,并给它们编号,把内存单元的编号称为地址(指针) 
以32位机器为例,2^32个字节的内存空间=4GB.
int a =1;向内存申请4个字节
&取地址操作符,先把地址先存到一个变量里  %p专门用来打印地址
11的二进制序列 1011, 8+0+2+1 
存储地址需要指针变量,指针变量大小取决于地址大小
int num = 10; &num;  //取出num的地址    
//注:这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址) 
printf("%p\n", &num); //打印地址,%p是以地址的形式打印
是变量就要分配空间
14 结构体
char short C语言的内置类型
人、书之类的 复杂对象 很难描述,C语言提供自定义类型:结构体、枚举、联合体。
struct 结构体关键字
例如:定义一个学生类型
指针:类型名+变量+* ps(得到s的地址,指向s)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值