栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言入门——基础教学(适合初学者、速学者)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言入门——基础教学(适合初学者、速学者)

文章目录
  • 一. 前言
  • 二. 第一个C语言程序
  • 三. 数据类型
  • 四. 变量和常量
    • a)变量
      • 1)局部变量
      • 2)全局变量
    • b)常量
      • 1)字面常量(相当于直接写)
      • 2)const修饰的常量
      • 3)#define定义的标识符常量
      • 4)枚举常量
  • 五. 字符串+转义字符+注释
    • a)字符串
      • 1)字符数组
    • b)转义字符
    • c)注释(推荐一本书《高质量C/C++编程指南》林锐PDF)
  • 六. 选择语句(分支语句)
    • a)if语句
    • b)switch语句(初学,后补充)
  • 七. 循环语句
    • a)while语句
    • b)for语句(初学,后补充)
    • c)do ... while语句(初学,后补充)
  • 八. 函数
  • 九. 数组
  • 十. 操作符
    • a)算术操作符
    • b)移位操作符
    • c)位操作符
      • 1)&:按位与
      • 2)|:按位或
      • 3)^:按位异或
    • d)赋值操作符
    • e)单目操作符
      • 1)!逻辑反操作
      • 2)sizeof
      • 3)~ 按(二进制)位取法
      • 4)++ 前置、后置++
      • 5)-- 前置、后置 --
      • 6)(类型)强制类型转换
    • f)关系操作符
    • g)逻辑操作符
    • h)条件操作符
    • i)逗号表达式
    • j)下标引用、函数调用和结构成员
      • 1)下标引用[]
      • 2)函数调用()
  • 十一. 常见关键字(讲几个,后期补充)
    • a)auto
    • b)extern
    • c)register
    • d)signed
    • e)unsigned
    • f)static
      • 1)static修饰局部变量
      • 2)static修饰全局变量
      • 3)static修饰函数
    • g)union
    • h)void
    • i)typedef
  • 十二. define定义常量和宏
    • a)define定义常量
    • b)define定义宏
  • 十三. 指针
  • 十四. 结构体
  • 十五. 补充
    • a)scanf函数
  • 十六. 最后说明

一. 前言

本文是在作者初学C语言后的整理的资料,在之后深入学习C语言后会进行补充说明

二. 第一个C语言程序
#include 

int main()
{
	printf("初学C语言");
	return 0;
}

这里说明下:

  • 由于printf的使用,需要引入头文件#include 。头文件就是为了这个printf函数的实现

  • 在运行程序的时候,如果使用的是VS2013版本的,会发现反应很快,输出一闪而过,这时候就需要设置一下为了看到代码运行的结果。如果用的是VS2013以上的版本,则不需要设置,都已经配置好了。将其子系统那块改成控制台即可。

  • 一个工程中有且仅有一个main函数

    1. 一个工程中可以有多个.c文件
    2. 多个.c文件只能有一个main函数
三. 数据类型
代码数据类型
char字符数据类型
short短整型
int整型
long长整型
long long更长的整型
float单精度浮点数
double双精度浮点数
  • 每种类型的大小(用sizeof来计算,单位byte)

  • 注:C语言标准:sizeof(long) >= sizeof(int)

  • 注:sizeof 是关键字,操作符,不是函数

  • 计算机中的单位

English名称换算
bit比特
byte字节1 byte = 8 bit
KB千字节1 KB = 1024 byte
MB兆字节1 MB = 1024 KB
GB吉字节1 GB = 1024 MB
TB太字节1 TB = 1024 GB
PBPetabyte1 PB = 1024 TB
  • 计算机中识别二进制 - 0和1
  • 识别八进制 - 0-7
  • 识别十进制 - 0-9
四. 变量和常量 a)变量
  • 定义:有些数据一定可变:工资、年龄、体重
  • 变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1)局部变量
  • 局部变量的作用域是变量所在的局部范围
  • 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
2)全局变量
  • 全局变量的作用域是整个工程
  • 全局变量的生命周期是:整个程序的生命周期

注意:

  • 局部变量global变量的定义没有什么问题
  • 当局部变量和全局变量同名的时候,局部变量优先使用
b)常量
  • 定义:有些数据一定不变:血型、性别、圆周率
1)字面常量(相当于直接写)

2)const修饰的常量

  • const修饰的常变量不能被修改,因为const定义的基本类型的变量保存的是实际的内存地址, 内存地址不能动
  • pai 被称为 const 修饰的常变量, const 修饰的常变量 在C语言中只是在语法层面限制了变量 pai 不能直接被 改变,但是 pai 本质上还是一个变量的,所以叫常变量
3)#define定义的标识符常量

  • #define定义的标识符不占内存,只是一个临时 的符号,预编译后这个符号就不存在了
4)枚举常量

  • 枚举常量的默认是从0开始,依次向下递增1的
五. 字符串+转义字符+注释 a)字符串
  • 定义:一串字符,用双引号括起来的一串字符
  • 字符串的结束标志是的转义字符
  • 计算字符串长度的时候,是结束标志,不算作字符串的内容
1)字符数组
  • 定义: 字符数组是一组相同类型的元素
  • 当方括号里面不写这个数组有几个元素的时候, 会根据后面数据的大小自动分配
  • 是隐藏的
  • arr2的后面的内存是未知的,而arr1后面有着字 符串结束标志
  • 注:对于字符串来说,是至关重要的,后面一定要 有,不然后面的空间识别不出,当运行后就会 显示乱码

计算字符串的长度

  • 注:由于arr2后面没有字符串结束标志,则arr2是不会结束的,会一直走下去,而走下去是未知的,直到碰到结束标志才会停止,所以arr2打印出来的长度是一个随机值
  • 这个警告出来,是因为没有引入头文件,引入就可以安全的使用strlen了
b)转义字符

  • 计算长度
  • 这里输出14是因为,328看上去应该是一个八进制的数据,那应该算一个字符,可以328的个位是8,而八进制里面只有0-7,没有8.所以328看成32转义字符和8,算两个字符
  • 打印一个单引号(c是打印单个字符)
printf("%cn", ''');
  • 打印一个字符串,字符串内容是双引号
printf("%sn", """);
  • ASCII码值

c)注释(推荐一本书《高质量C/C++编程指南》林锐PDF)
  • 定义:用来解释复杂代码
  • //是C++的注释风格
  • 是C语言的注释风格 - 但不支持嵌套注释
  • 一般来说,习惯用//
六. 选择语句(分支语句) a)if语句
  • 语法结构:
//第一种:
if (表达式)
	语句;

//第二种:
if (表达式)
	语句1;
else
	语句2;

//第三种:多分支
if (表达式1)
	语句1;
else if (表达式2)
	语句2;
else
	语句3;
  • C语言是如何表示真和假你? - 非0就是真,0就是假
  • 注:if、else这些语句都默认只控制一行,若想控制多行,就用{}包起来
  • 注:else和它离得最近的if匹配,不看缩进对齐
b)switch语句(初学,后补充) 七. 循环语句 a)while语句
#include 

int main()
{
	int i = 0;
	while (i <= 100)
	{
		if (1 == i % 2)
		{
			printf("%d ", i);
		}
		i++;
	}
	return 0;
}
b)for语句(初学,后补充) c)do … while语句(初学,后补充) 八. 函数
  • 特点:简化代码,代码复用
九. 数组
  • C语言中给了数组的定义:一组相同类型元素的集合
  • C语言规定:数组的每个元素都有一个下标,下 标是从0开始的
  • 因此,数组可以通过下标进行访问
十. 操作符 a)算术操作符
  • 加 减 乘 除 取余(+ - * / %)
b)移位操作符
  • 右移 左移(>> <<)
  • 二进制移动位数,总体移,左移:左边多出来的部 分补到右边;右移:右边多出来的部分补到左边
c)位操作符 1)&:按位与
  • 参与运算的两数各对应的二进位相与。只要对应的二个二进位都为1时,结果位就为1
2)|:按位或
  • 参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1
3)^:按位异或
  • 两个相应的二进制位值不同则为1,否则为0

注意:都以补码的形式出现,如果是负数,还要考虑第一位

d)赋值操作符

e)单目操作符

1)!逻辑反操作
  • 0表示假,1表示真,把真变成假,把假变成真
2)sizeof
  • 是一个操作符,不是函数,用来计算类型或者变量的大小
  • 函数后面的括号不能删去,而操作符后面的括号 可以省去(判别是否为函数的方法)
  • 一个数组的大小为4byte(字节)
3)~ 按(二进制)位取法
  • 把所有二进制中数字,1变成0,0变成1
  • 0的二进制:0000000000000000000000000000000
  • 按位取法转换后:11111111111111111111111111111111

补充:整数在内存中存储的是补码~,所以要将其转换成原码

  • 一个整数的二进制表示有三种:原码、反码、补码
  • 因为一个数组大小为4个字节,也就是32bit,转换成二进制就是32位
  • 注:正整数:原码、反码、补码相同
4)++ 前置、后置++
  • 前置++ 先++,后使用

  • 后置++ 先使用,后++

5)-- 前置、后置 –
  • 同理于4)++前置、后置++
6)(类型)强制类型转换

f)关系操作符

g)逻辑操作符

  • 逻辑操作符(0为假,1为真)
  • && - 逻辑与(只有两个都为真时才为真)
  • || - 逻辑或(只有两个都为假才为假)
h)条件操作符

  • exp1 成立,exp2表达式计算,整个表达式的结果是:exp2的结果
  • exp1不成立,exp3表达式计算,整个表达式的结果是:exp3的结果
i)逗号表达式

  • 逗号隔开的一串表达式
  • 从左到右依此计算的
  • 整个表达式的结果是最后一个表达式的结果
j)下标引用、函数调用和结构成员

1)下标引用[]

2)函数调用()

十一. 常见关键字(讲几个,后期补充)
  • C语言提供的,不能自己创建关键字
  • 关键字不能做变量名

a)auto
  • 自动的 - 每个局部变量都是auto修饰的
b)extern
  • 用来声明外部符号的
  • 声明不需要指定的值
extern int g_val;
c)register
  • 寄存器关键字

d)signed
  • 有符号的,比如10,-20
e)unsigned
  • 无符号的
f)static
  • 静态的
1)static修饰局部变量
  • 改变了局部变量的生命周期(本质上改变了变量的存储类型)
  • 本身局部变量在所在范围结束后,就会自动销毁,而static修饰局部变量后,就不会销毁,直到程序结束
  • 让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束
2)static修饰全局变量
  • 使得整个全局变量只能在自己所在的源文件(.c) 内部可以使用,而其他源文件不能使用
  • 经过static修饰后
  • 全局变量,在其他源文件内部可以被使用。是因为全局变量具有外部链接属性,但是被static修饰后,就变成了内部链接属性,其他源文件就不能链接到整个静态的全局变量了
3)static修饰函数

  • 使得函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用
  • 本质上,static是将函数的外部链接属性变成了内部链接属性!(和static修饰全局变量一样)
g)union
  • 联合体(共用体)
h)void
  • 无-空
i)typedef
  • 类型定义(类型重命名)
  • 将 unsigned int 重命名为 u_int

补充:

  • define - 是不是关键字?NO - 预处理指令
  • include - 是不是关键字?NO - 预处理指令
十二. define定义常量和宏 a)define定义常量

b)define定义宏

十三. 指针
  • 内存怎么编号?
    32位 - 32根地址线 - 物理线 - 通电 - 正电1/负电0
    64位同理
  • 一个这样的内存单元多大
  • 指针都是4个字节(32位)
  • 一个内存单元是一个字节,然后分配地址
  • 打印地址
  • 取出变量地址:a有4个字节,每一个字节代表一个地址,取出来的是较小的地址(第一个地址)
  • %p专门用来打印地址
  • pa用来存放地址,在C语言中叫pa是指针变量
  • *说明pa是指针变量
  • int 说明pa指向的对象是int类型的

储存地址,需要定义指针变量

  • 指针还可以解引用,可以间接改变数值

总结:

  • 指针的大小是相同的!,32位系统是4, 64位系统是8
  • 指针是用来存放地址的
  • 指针需要多大空间,取决于地址的存储需要多大空间
    32位 32bit - 4byte
    64位 64bit - 8byte
十四. 结构体
  • 使得C语言有能力描述复杂对象


    说明:
  • 打印单精度就%f , 打印双精度就%lf, 这是字母L,不是数字1
十五. 补充 a)scanf函数
  • 在VS中,直接使用会报错
  • 这个提示要求我们使用scanf_s函数,然而scanf_s函数由VS编译提供,而不是C语言标准规定的
  • 要想使用scanf函数不报错,就得在源文件的第一行加上:
  • #define _CRT_SECURE_NO_WARNINGS 1
  • 而为了方便,直接将这个代码放入在创建源文件时就自动生成
  • 找到newc++ file.cpp这个文件,将代码放入即可,若必须管理员才能修改,就将其复制出来在外部修改,在粘贴回去替换。修改完后就会发现创建源文件就会自带上这个代码。找不到这个文件可以使用everything软件查找
  • 注:一般在后面的参数+&,因为对于scanf函数,它将参数视为地址
十六. 最后说明
  • 之后会不时地更新文档,小伙伴们注意接收哦,另外还有这块PDF格式思维导图,放在github上了https://github.com/itzzan,需要地小伙伴自行下载,思维导图也会不定时更新哦
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025517.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号