IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 欢迎光顾C语言的世界(C语言基础知识) -> 正文阅读

[C++知识库]欢迎光顾C语言的世界(C语言基础知识)

C语言中的第一个代码

int main()
{
	printf("Hello World!\n");//打印结果为Hello World!
	return 0;
}

计算机中的单位

bit – 比特位
1 byte - 字节 = 8 bit
1 kb = 1024 byte
1 mb = 1024 kb
1 gb =1024 mb
1 tb = 1024 gb
1 pb = 1024 tb

C语言中的数据类型

(大小单位是字节):

char 字符型(1)
short 短整型 (2)
int 整型 (4)
long 长整型(4)
long long 更长的整型 (8)
float 单精度浮点型 (4)
double 双精度浮点型(8)

在C语言中,如何创建一个变量:

类型+变量的名字 = 值
例如:int a = 20 char b = ‘c’ double d = 1.0
变量:能被改变的量
常量:不能被改变的量

变量的分类:
局部变量:{ }内部定义的
全局变量:{ }外部定义的

注意:当局部变量和全局变量名字冲突的情况下,局部变量优先。

在这里,给大家写一个简单的C语言代码,让大家初识一下C语言变量的使用。
写一个代码,求输入两个整数的和

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//求两个整数的和
int main()
{
	int a = 0;
	int b = 0;
	int sum = 0;
	scanf("%d %d", &a, &b);
	sum = a + b;
	printf("%d\n", sum);
	return 0;
}

变量的作用域和生命周期

作用域:限定变量名字的可用性的代码范围就是这个名字的作用域。通俗来讲就是,一个变量能在哪里使用,哪里就是它的作用域。
局部变量的作用域:就是局部变量所在的局部范围。
全局变量的作用域:整个工程内

生命周期:指的是变量的创建和销毁之间的时间段
局部变量的生命周期:变量进入局部范围那一刻,生命开始;离开局部范围那一刻,生命结束。
全局变量的生命周期:整个main函数内,即整个程序的生命周期。

常量

C语言中的常量分为:
1)字面常量
例如:3 、‘a’、“abcdef”
2)const修饰的常变量
例如:const int num = 10
num就是常变量,具有常属性(不能被改变的属性)。本质还是变量。
3)#define定义的标识符常量
例如:#define MAX 10000
MAX在这里就是define定义的标识符常量,在这里MAX的值就是10000。
4)枚举常量

 例如:指的是可以一一列举的常量

> enum Sex
> {
>      MALE,//枚举常量,不赋值的话,默认从0开始。
>      FEMALE,
>      SECRET
> };

字符串+转义字符+注释

字符串就是一串字符 - 用双引号引起的一串字符就是字符串。
注意:字符串在结尾的位置隐藏了一个\0的字符,\0是字符串的结束标志。

在这里给大家一个实例:
#include <stdio.h>


int main()
{
	char arr1[] = "abc";
	char arr2[] = { 'a', 'b', 'c' };
	char arr3[] = { 'a', 'b', 'c' ,'\0'};
	printf("%s\n", arr1);//abc
	printf("%s\n", arr2);//abc烫烫烫
	//这是为什么呢?原因就是%s是要打印一个字符串的,而字符串的结尾标志
	//是\0,而arr2的数组里面没有\0,因此不会遇到结束标志,从而停止。
	printf("%s\n", arr3);//abc
	//如果按照arr3打印,才会打印出abc。

	return 0;
}

在这里给大家展示一个求字符串的长度的函数:strlen()

#include <stdio.h>
#include <string.h>

int main()
{
	int len = strlen("abc");
	printf("%d\n", len);//3
	char arr2[] = { 'a', 'b', 'c' };
	printf("%d\n", strlen(arr2));//随机值,因为没有结束标志\0。
	return 0;
}

注意:字符串的结束标志虽然是\0,但是在用strlen来计算字符串的长度时,是不会把\0当作内容计算的。因为它只是结束的标志,不能算作内容。
但是在用sizeof来计算数组或者字符串大小的时候,\0是要被算作内容的,因为它占据着空间。

转义字符
一个代码让你搞懂什么是转义字符:

int main()
{
printf("c:\code\test.c\n");//   \t在这里是转义字符,为水平制表符
//你以为的结果是c:\code\test.c\n
//但实际的结果是c:code  est.c
return 0;
}

顾名思义,转义字符就是转变这个字符的原有意思。下面给大家介绍一些常见的转义字符。

转义字符       释义
\?            在书写连续多个问号时使用,防止他们被解析成三字母词
\'            用于表示字符常量'
\“            用于表示一个字符串内部的双引号
\\            用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a            警告字符,蜂鸣
\b            退格符
\f            进纸符
\n            换行
\r            回车
\t            水平制表符
\v            垂直制表符
\ddd          ddd表示1~3个八进制的数字。 如: \130 X
\xdd          dd表示2个十六进制数字。 如: \x30 0

注释

注释是用来解释复杂代码的。
两种注释方法:
1)//
2) /* …*/

选择语句

这里就是一个选择语句的示例:

int main()
{
	int a = 0;
	printf("你是男孩还是女孩?(选择1 or 0):>");
	scanf("%d", &a);
	if (a == 1)
	{
		printf("我是男孩子\n");
	}
	else
	{
		printf("我是女孩子\n");
	}
	return 0;
}

循环语句

C语言中实现循环一般有三种语句:
1)while语句
2)for语句
3)do…while语句

这里给大家以while语句为例,演示一个简单的循环语句:

int main()
{
	int a = 0;
	while (a < 30000)//循环
	{
		printf("工资:%d\n", a);
		a++;
	}
	if (a == 30000)
	{
		printf("领到工资30000元\n");
	}
	return 0;
}

函数

上面我们写了一个求两个整数之和的代码。在这里,我们在此基础上加以修改,借用函数来实现这个功能的实现。
示例如下:

int Add(int x, int y)
{
	int z = 0;
	z = x + y;
	return z;
}
int main()
{
	int a = 0;
	int b = 0;
	int sum = 0;
	printf("请输入两个数:>");
	scanf("%d %d", &a, &b);
	//sum = a + b;
	sum = Add(a, b);
	printf("%d\n", sum);
	return 0;
}

数组

> 数组是什么?
> 一组相同类型的元素的集合就是数组。
> 例如:int arr[10] = {1,2,3,4,5,6,7,8,9,10};
>      char ch[5] = {'a','b','c'}; //不完全初始化,剩余的默认为0.
> 数组是用下标来访问的,数组的下标从0开始。

操作符

算数操作符:+   -   *  /  %

移位操作符:>>(右移)   <<(左移)

位操作符:&(按位与)   ^(按位异或)   |(按位或)

赋值操作符:=  +=  -=  *=  /=  &=  ^=  |=  >>=  <<=

单目操作符:
!    逻辑反操作
-    负值
+    正值
&    取地址
sizeof     操作数的类型长度(以字节为单位)
~    对一个数的二进制按位取反
--   前置、后置--
++   前置、后置++
*    间接访问操作符(解引用操作符)
(类型)     强制类型转换

关系操作符:
>
>=
<
<=
!=    用于测试“不相等”
==    用于测试“相等

逻辑操作符:
&&   逻辑与
||   逻辑或

条件操作符:
exp1 ? exp2 : exp3

逗号表达式:
exp1, exp2, exp3, …expN

下标引用、函数调用和结构成员:
[]   ()   .   ->

关键字

常见关键字:
auto break case char const continue default do double else 
enum extern float for goto if int long register return short
signed sizeof static struct switch typedef union unsigned void 
volatile while
在这里介绍几个关键字:
auto 是自动的 - 每个局部变量都是auto修饰的
extern 是用来申明外部符号的
register  寄存器关键字,把数据存到寄存器中
signed  有符号的
unsigned  无符号的
static  静态的
union  联合体(共用体)
void  无(空)
typedef  类型定义,类型重命名
注意:define、include不是关键字,是预处理指令。

static 静态的
1)static修饰局部变量
static修饰局部变量,改变了局部变量的生命周期(本质上是改变了变量的存储类型)
2)static修饰全局变量
static修饰全局变量,使得全局变量只能在自己所在的源文件内部可以使用,其他源文件不能使用。
全局变量,在其他源文件内部可以被使用,是因为全局变量具有外部连接属性,但是被static修饰之后,就变成了内部连接属性,其他源文件就不能链接到这个静态的全局变量了。
3)static修饰函数
static修饰函数,使得函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用。本质上,static是将函数的外部链接属性变成了内部链接属性!(和static修饰全局变量一样!)

define定义常量和宏

define是一个预处理指令
1)define定义符号
2)define定义宏:

示例:
#define ADD(X,Y) X+Y
int main()
{
	printf("%d\n", ADD(2, 3));
	return 0;
}

指针

指针是用来存放地址的
int main()
{
	int a = 10;//a在内存中要分配空间的 - 4个字节
	printf("%p\n", &a);//%p专门用来打印地址的
	int * pa = &a;//pa是用来存放地址的,在c语言中pa是叫指针变量
	//*说明pa是指针变量
	//int说明pa执行的对象是int类型的
	return 0;
}
int main()
{
	int a = 10;
	int * pa = &a;
	*pa = 20;//*解引用操作,*pa就是通过pa里边的地址,找到a。
	printf("%d\n", a);
	return 0;
}

指针变量的大小

int main()
{
	printf("%d\n", sizeof(char *));//4
	printf("%d\n", sizeof(short *));//4
	printf("%d\n", sizeof(int *));//4
	printf("%d\n", sizeof(double *));//4
	return 0;
}

由此可见,指针大小在32位平台是4个字节,64位平台是8个字节。

结构体

结构体可以让C语言创建新的类型出来。什么意思呢?示例如下:

//创建一个学生的类型
struct Stu
{
	char name[20];//成员变量
	int age;
	double score;
};
//创建一个书的类型
struct Book
{
	char name[20];
	float price;
	char id[30];
};
int main()
{
	struct Stu s = { "张三", 20, 85.5 };
	//结构体的创建和初始化
	printf("1:%s %d %lf\n", s.name, s.age, s.score);
	//结构体变量.成员变量
	struct Stu * ps = &s;
	printf("2:%s %d %lf\n", (*ps).name, (*ps).age, (*ps).score); 
	printf("3:%s %d %lf\n", ps->name, ps->age, ps->score);
	//结构体指针 -> 成员变量名
	return 0;
}

C语言基础知识暂时告一段落了!
希望这些对大家有帮助。
下次再会!

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:00:48  更:2021-08-04 11:00:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 2:39:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码