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语言中的常量并非仅限于数值型的“常数”,还包括字符,字符串,符号常量和常变量等。

变量变量是内存中的一段存储区域*;**

程序之所以需要变量,是因为在程序运行过程中有些数据需要记住,变量就是用来记住这些数据的;
变量的存储数据是不固定的,可以改变
CPU在存储数据时一般情况下会采用小端模式,即先存低字节,再存高字节

(二)、变量的类型

类型表示存储方式存储大小
字符型charASCII码1字节
短整型short补码2 字节
整型int补码2 或 4 字节
长整型long补码4字节
无符号短整型unsigned short补码2 字节
无符号整型unsigned int补码1字节
无符号长整型unsigned long补码4 字节
浮点型floatIEEE7544 字节
双精度浮点型doubleIEEE7548 字节

变量的不同类型表示不同的数据,变量的短长,单双精度是为了合理分配内存空间,提高运行效率

变量类型输出

#include<stdio.h>
int main()
{
  int a;    //定义整型变量 a
  char b;    //定义字符型变量 b
  float c;    //定义浮点型变量 c
  double d;    //定义双精度浮点型变量 d
  
  a=2001;  //为变量赋值
  b="jianghu";
  c=10.05;
  d=122.3536272828;
  
  printf("江湖%d\n",a);    //输出
  printf("江湖:%d——江湖2001!\n",b);
  printf("生日_date:%2f\n",c);
  printf("小数%13.10f\n",d); //浮点型用“%f”表示占位符
  return 0;
}

C语言中还有一类特殊的变量,这种变量用来存储某种实体的地址,这里所说的实体包括变量,数组和函数。
存储地址的变量称为指针变量

指针变量在内存中所分配的字节数与int型变量相同

C语言中,并没有给变量规定大小,但可以用运算符sizeof()求得某种类型或某项数据在内存中占用的字节数

使用时要在括号中写上类型名,变量名或表达式;

char a;
float b;
printf("%d,%d\n",sizeof(char),sizeof(a));
printf("%d,%d\n",sizeof(float),sizeof(b));

变量的存储大小(占字节数):

#include<stdio.h>
int main()
{
	printf("%d\n",sizeof(char));
	printf("%d\n",sizeof(int));
	printf("%d\n",sizeof(short));
	printf("%d\n",sizeof(long));
	printf("%d\n",sizeof(long long));
	printf("%d\n",sizeof(float));
	printf("%d\n",sizeof(double));
	printf("%d\n",sizeof(unsigned int));
	printf("%d\n",sizeof(unsigned short));
	printf("%d\n",sizeof(unsigned long));
	return 0; 
} 
输出结果:1,4,2,4,4,8,4,2,4

变量的分类:局部变量和全局变量

#include<stdio.h>
int a=2;   //全局变量
int main()
{
   int a=22;  //局部变量
   printf("%d\n",a);
   return 0;  
}

局部变量和全局变量名称相同是可以同时存在,但在执行时局部变量优先,所以建议局部变量和全局变量名称尽量不要相同
局部变量和全局变量的适用范围有差异,全局变量是由于
全局范围均可执行
,局部变量
仅适用于局部*,局部变量的作用域是定义变量的函数体内,全局变量的作用域是整个项目工程。

(三)、变量

1.变量定义的格式

普通变量的定义格式:用类型名开头,加一个空格之后再写变量名(自己命名),定义多个变量,变量之间用逗号隔开。

int a;   //定义整型变量 a
float x,y,z; //定义多个变量,变量之间用逗号隔开

指针变量的定义格式与普通变量定义格式相似,区别的是,指针变量名字前面要多写一个*

char *p;  //定义了一个指针变量p,用来存char型变量的地址
int *p1,*p2;    
float x,y,*pi,*p2;  //定义了两个普通变量和两个指针变量

变量必须先定义才能使用
定义变量的目的:一是给变量起一个名字,以便在程序中分辨它;二是把变量的类型告诉计算机,以便让计算机给变量分配存储空间,因为有了变量类型,计算机才知道该给变量分配多少字节,才能知道变量的值用什么方式存储。

2.变量的命名

不管是变量,还是数组,函数和结构体等,在C语言中每一样东西都有一个名字作为标识,即为:标识符

C语言对标识符有以下要求:

  • 标识符只能由英文字母,数字和下划线组成,但不能以数字开头
  • C语言是区分大小写的,即大小写被认为是两种不同的字符,例如:name和NAME是不一样的
  • 不允许关键字作为标识符,C语言共有44个关键字不能作为标识符
  • 标识符长度有限制,超过限制后面的字符不起作用

注:变量名不能与函数名同名

3.变量的属性

每个变量都有“”和“地址”两个属性。

变量的值指的是变量在内存中所存的内容,变量的地址指的是变量在内存中所处的位置,其起始地址称为变量的地址

把内存的哪些字节分配给变量是无法预知的,但是变量的分配位置,系统可以感知,每当内存给一个变量分配了空间,系统都会把变量名和它的地址,类型等信息记下,以便可以随时找到它存取它,因此在变量获取空间后,其地址是可以被知道的,用取地址运算符&便可以获取变量的地址

输出变量的两个属性:

#include<stdio.h>
int main()
{
	int a;
	a=7;
	printf("%d,%p\n",a,&a); //%p表示用十六进制数输出地址 
	return 0;
} 

4.变量的赋值和赋初值

定义变量的目的就是为了存储数据,而赋值和赋初值就可以实现这一目的。

1)赋值

再给变量分配空间的任务完成后,再给变量存放数据,成为赋值。

int a;
a=5;    //向变量a中存放数据即为赋值

在C语言中“=”是赋值号,不是数学里的等于号,赋值就是存储:把赋值号右边的数据存储到左边的变量的内存空间中。C语言中,“==”才是等于号。
给指针变量赋值

int a,*p;  //给变量a,p分配内存空间
p=&a;    //把a的地址存到p中,即给p赋值

2)赋初值
在给变量分配空间的时候就向其中存放数据,称为赋初值;

int a=3;  //向内存申请空间直接赋值;

注意:变量赋初值相同时不能 int a=b=c=2; true: int a=2,b=2,c=2;


二、基本数据类型

(一)、整型数据

整型数据包括short,int,long,unsigned short,unsigned,unsigned long等所有整数

1.整型常量的表示

程序中用到的整型变量可以用三种进制表示:十进制,八进制,十六进制。

int a,b,c,d,e;
a=100;    //十进制
b=0144;    //用八进制表示整数必须以0开头
c=-0144;    
d=0x64;    //用十六进制表示整数,必须以0x或0X开头
e=-0x64;

2.整型数据的存储

所有整数在计算机中都是以补码的形式存放的,

3.整型数据的输出

常用的输出格式:

  • 带符号整数输出时可以用十进制,八进制,十六进制
int a=2;
long b=2222;
short c=22;
printf("%d\n",a);  //%d表示用十进制输出整数 
printf("%o\n",a);  //%o表示用八进制输出整数 
printf("%x,%X\n",a,a);  //%x或%X表示用十六进制数出整数 
printf("%Ld,%lo,%lx\n",b,b,b);  //加上l或L表示输出长整数 
printf("%hd,%ho,%hx\n",c,c,c);  //加上h表示输出短整数 
  • 无符号整数一般用%u格式输出,表示用十进制把一个数据当做无符号整数来输出。
unsigned int a=33563;
long b=2000;
printf("%u,%lu\n",a,b);  // %u输出无符号整数
  • 带符号整数可以当做无符号整数输出,反之亦然。
short a=-1;
unsigned short=64774;
printf("%hd,%hd\n",a,b);  //%hd输入带符号短整数
printf("%hu,%hu\n",a,b);  //%hu输入无符号短整数

(二)、实型数据

  1. 实型常量

1)实型常量:

带小数点的常量称为实型常量,实型常量的两种表示方式:小数形式,指数形式。

*指数形式:0.125=1.25X10^-1=1.25E-1

C语言规定:用指数形式表示实数时,E前面必须有数字,E后面必须是整数

2)实型常量的类型

实型常量有单精度(float)和双精度(double)两种类型,单精度表示的有效数位是小数点后7位双精度表示的有效数位时小数点后15位,在常量后加上F或f表示单精度,在常量后加上L或l表示双精度。

  1. 实型数据的存储

单精度和双精度的实型数据,都是以浮点数的方式存储的,

float:

float型的任何数据,在存储之前都必须表示为

(+/-符号) x M x 2^n
其中,n是指数,M表示满足条件(1.0</=M<2.0)
如:30要先表示为+1.875x2^4

*实数的存储都是不精准的

float x=0.2;
if(x=0.2)
  printf("相等\n");
else
  print("不相等\n");
输出结果:不相等
  1. 实型数据的输出

单精度和双精度型数据都可以用%f或%e(%E)格式输出,%f格式使用小数输出,%e/%E格式是用指数形式输出

#include<stdio.h>
int main()
{
  float x=12345678,y=0.00123; 
  double z=192837.3733837228;
  printf("%f,%f,%f\n",x,y,z);  //%f以小数输出
  printf("%e,%e,%e\n",x,y,z);  //%e以指数形式输出
  return 0;
}
输出结果:12345678.000000,0.001230,192837.373384
         1.234568e+007,1.230000e-003,1.928374e+005

(三)、字符型数据

数据不仅仅指数值,还包括字符,字符也是C语言程序中经常要处理的数据,C语言中可以处理的字符有英文字母,数字,标点,空格和其他的符号;

1.字符常量

单个的字符是字符常量,程序中要表示一个字符常量不能直接写字符名,会引起二义性,为了区分变量和字符常量,C语言规定:字符必须放在一堆对引号之中;

char c1='a',c2='b',c3='c';

C语言中单引号与普通引号不同,C单引号表示定界符,表示一个字符的前后界。
若在C语言中使用单引号,应该表示为’’’

*程序中的引号不分左右

C语言中,反斜线()的作用是把后面字符的本来含义转为另外的含义,如’\n’,不加斜杠表示字符n,加上斜杠表示换行符

C语言中以\开头的字符称为转义字符,

C语言常用的转义字符

转义字符代表含义输出字符的结果
一个单引号输出:’
‘’一个双引号输出:"
\一条反斜杠输出:\
\b退格符(backspace)退回一格
\n换行符换行
\r回车键
\t制表符(tab)
\000
\xhh

2.字符数据的存储

C语言的字符是用ASCII码存储的,大小为一个字节

3.字符数据的大小

C语言认为字符也有大小,字符的的大小就是存储ASCII码值的大小。

且给字符数据既可以用作字符,也可以用作整数,给变量赋值是,即可以赋字符,也可以赋整数

char c1='A',c2=65,c3=' ',c4='1';
printf("%c,%c,%c,%c\n",c1,c2,c3,c4);
printf("%d,%d,%d,%d\n",c1,c2,c3,c4);
printf("%d,%d,%d\n",c1+c2,c1+1,'A+1');
//输出结果: A,A, ,1
           65,65,32,49
           130,66,66

整数也可以当做字符型数据输出,只要数值不超过255,

printf("%c",65)
输出结果:A

4.字符数据的输出

输出字符型数据,可以用printf()函数,也可以使用putchar()函数;

(四)、字符串

程序中有时候需要一串字符,即字符串。

C语言规定:字符串必须使用一对双引号括起来,“a b c”,双引号中也可以没有字符"",表示一个空串。

C语言只有字符串常量,没有字符串类型的变量

1.字符串的存储

存储字符串是也是将ASCII码按照存储顺序存储,在后面要多加一个空字符(’\0’)表示结束

2.字符串的输出

输出字符串,printf()函数要使用%s格式,还可以使用puts()函数

printf("%s%s%s%s%s\n","abcd"," ","123","","xyz");

三、符号常量和常变量

符号常量:

为了使程序更加简洁,方便,增加可读性,需要在程序中定义符号变量

#define PI 3.1415926

PI为符号变量,3.1415926为符号变量的值,符号常量的命名通常使用大写字母
定义符号变量语句由#开头,所以属于预编译命令,称为宏定义

常变量:

const int n=60,m=50;  //定义两个常变量并初始化
const float x=3.14;

常变量定义要用const开头,后面是定义变量,并赋初值(content恒定的)
*常变量一旦初始化以后不允许发生改变,常变量只能赋初值,不能赋值,定义常变量以后可以使用但不能改变;

四、运算符和表达式

(一)算术运算符

算术运算符:+(正号),—(负号),*(乘),/(除),%(求余),+(加),—(减)

+(正号),—(负号)是单目运算符

*(乘),/(除),%(求余),+(加),—(减)是双目运算符

优先级:在C语言中,+正号,—负号优先级最高,+(正号),—(负号),*(乘),/(除),%(求余)优先级次之,+(加),—(减)优先级最低

结合性:单目运算符的结合性都是从右至左(右结合性),双目运算符的结合性是从左至右(左结合性)

*两个整数运算,最终结果还是整数

(二)赋值运算符

赋值运算符就是=,表示存储/赋予,即把等号右边的值给左边的变量

出现在赋值运算符左边的表达式称为**左值,**左值必须在内存中有大小合适的存储空间,且左值允许赋值(有宏定义则不予许赋值),变量是最常用的左值,但常变量不是左值,因为常变量不予许赋值,

复合赋值运算符:

运算符+=-=*=/=%=
举例a+=2a-=ba*=b+ca/=b+ca%=5
相当于a=a+2a=a-ba=a*(b+c)a=a/(b+c)a=a%5

赋值运算符的结合性是从右自左,a=b=2相当于是a=(b=2)

**赋值表达式:**若一个表达式最后进行的是赋值运算,则该表达式是赋值表达式

**说明:**C语言中表达式最后执行的是什么运算操作就是什么表达式,

  • C语言所有表达式都是有值的
  • 赋值表达式的值等于赋值后左边变量的值
  • 赋值表达式的值可以参与运算
  • 赋值表达式的值可以付给另外一个变量

(三)自增减运算符

自增运算符:++

自减运算符:–

自增减运算符都属于单目运算符,都是右结合性,运算优先级与正负号相同。

自增运算符用于给便量增加一个1,自减运算符用于给变量减少一个1

自增运算符:

自增减运算符分为前++和后++,写在变量前的是前++,写在变量后的是后++

前++:

int i=1,m;
m=++i;
printf("%d,%d\n",m,i);

后++:

int i=1,m;
m=i++;
printf("%d,%d\n",m,i);

++i和i++的求解过程不同,++i和i++的值都是i,但是i的值不同
m=++i相当于

i=i+1    //先给i加1
m=i    //表达式(++i)的值赋给m

注:++i是先计算再赋值
m=i++相当于

m=i    //表达式(i++)的值赋给m
i=i+1  //给i加1

注:i++是先赋值再计算
表达式++i的值是加1之后的,表达式i++的值是加1之前的

自减运算符的用法与自加运算符类似

(四)逗号运算符

逗号运算符:

C语言中逗号也是运算符,逗号运算符是一个双目运算符,其结合性自左至右,优先级在C语言中是最低的,

逗号表达式:

逗号表达式的格式:表达式1,表达式2

逗号表达式的求值:

逗号表达式的值等于逗号后面表达式的值,“2,3”表达式的值是3,表达式“a=2,a3”的值是a3的值,即6,因为a=2所以先执行

多重逗号表达式:

(a=1,b=2),a+b

逗号表达式可以不断嵌套

表达式1,表达式2,表达式3…

(五)类型转换运算符

转换数据类型,

格式:(类型名)(表达式)

五、数据的类型转换

六、程序设计

  1. 从键盘输入一个大写字符,输出其小写;
  2. 从键盘输入两个整数,求他们的平方和;
  3. 分数的分子和分母都由键盘输入,输出分数的值;
  4. 从键盘输入两个整数,交换他们的值后输出他们;

1,程序设计实现:

要想使输入的大写字母输出为小写字母,则必须在程序中找到大小写字母的转换机制或转换函数,利用格式化输入,输出函数达到输入输出的效果;因为字符型变量的存储是利用ASCII码,所以在输入输出时我们也首先想到利用ASCII码来实现大小写的转换;例如大写A=65,小写a=97,a-A=32;

代码呈现:

#include<stdio.h>
int main()
{
	char c1;
	scanf("%c",&c1); //输入一个大写字母 
	c1=c1+32;	//大写转换为小写 
	printf("%c\n",c1);
	return 0;
}
输入结果:C
输出结果:c

程序改进:任意大小写输出转换

#include<stdio.h>
int main()
{
	char c1;
	printf("请输入一个字母:");
	scanf("%c",&c1);
	if(c1>='a'&&c1<='z')  //if条件语句,判断输入字母的大小写
	{
		c1=c1-32;
		printf("您输入的是小写字母,为您输出他的大写%c\n",c1);
	}
	else
	{
		c1=c1+32;
		printf("您输入的是大写字母,为您输出他的小写%c\n",c1);
	}
	return 0;
}
输入结果:a
输出结果:A

输入结果:A
输出结果:a

2、程序设计实现:

输入两个整数来求他们的平方和,首先要定义两个整型变量,scanf输入,计算,printf输出结果

代码实现:

#include<stdio.h>
int main()
{
	int a,b,he,A,B;	//定义变量 
	scanf("%d%d",&a,&b);
	A=a*a;	//考虑到C语言的运算符的优先级,应该先算平方再求和 
	B=b*b;
	he=A+B;
	printf("%d\n",he);
} 

3、程序设计
首先知道,分数的分子和分母就是除计算中的被除数和除数,计算环节等同于除法计算,需要注意的是结果的变量定义

代码实现:

4、程序设计

代码实现:

#include<stdio.h>
int main()
{
	char a,b,c;
	printf("请输入两个字符: \n"); 
	scanf("%c%c",&a,&b);
	c=a;
	a=b;
	b=c;	//b=c=a  
	printf("交换字符:%c\t%c\n",a,b);
	return 0;
}

另:system函数

system()调用外部命令函数:

#include<stdlib.h>  //system函数的头文件/函数库
#include<stdio.h>
int main()
{
	int value;   //定义整型变量,用于返回整数值 
	value=system("dir/s");   //system用于调用外部系统命令或打开外部程序 
	printf("%d\n",value); 	//输出返回结果,如果是0表示执行成功,否则执行失败或中断执行 
	return 0;
} 
  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:03:05 
 
开发: 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/9 20:51:25-

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