【C/C++】C基础_2_数据类型,常量变量,输入输出,运算符,/if分支,switch分支,循环/,数组,函数,变量的作用域,指针


1.数据类型

yum -y install gcc,yum install gcc-c++,一个程序只有一个main函数
#include:包含其他文件预处理指令
main(){}:这个是最简单的C程序
():函数的参数放在括号中
:程序只认半角分号
/*...*/:多行注释
在这里插入图片描述
在这里插入图片描述
1.基本类型
字符型(char):描述单个字符,用单引号包含起来,如’a’,‘A’,‘1’,’$'等,键盘能输入的英文和半角的符号都是字符。关键字char是单词character(字符)的简写。中文里的汉字和标点符号是两个字节,不能算一个字符,以下都是非法的
在这里插入图片描述
整型(int):描述整数,整数在计算机上是准确表示的,如123,500,0,-10等。关键字int是integer(整数)的简写
浮点型(double):描述实数,有小数位,如10.0,123.55,3459.98,-50.3,实数在计算机上一般是近似表示的,关键字double(双倍的)
2.字符串
描述多个字符,用双引号包含起来,可以是英文,数字,中文,标点符号,半角全角都可以
在这里插入图片描述
3.构造类型:由已知的基本类型通过一定的构造方法构造出来的类型,包括数组和结构体
4.指针类型:指针可以指向内存地址,主要用于函数的参数传递
C语言还有其他数据类型像单精度浮点型(float)等等,暂不介绍

2.常量和变量

对计算机来说,图片,文字,音乐,视频等都是数据,在计算机以二进制的0和1存储,数据量越大,0和1就越多。数据分为静态数据和动态数据。我们写程序目的就是告诉计算机如何输入,处理,传输,存储和展示数据
1.静态数据:永久性数据,一般存储在硬盘中,只要硬盘没坏数据都是存在的,电脑关机重启后依然存在
2.动态数据(临时数据):程序运行过程中,动态产生的临时数据,一般存储在内存中,软件或者电脑关闭则这些临时数据会被清楚
为什么不把动态数据存放到硬盘呢?因为访问内存的速度比访问硬盘快很多倍。但是与硬盘相比,内存的存储空间比较小
3.数据大小:(1)数据都是由二进制的0和1组成。
(2)数据都会占用空间,静态数据占硬盘空间,动态数据占内存空间。
(3)数据占用空间的最小单位是比特(bit)。一个1或者0就是一个比特,即1bit。
(4)计算机中,以字节为单位存储数据。1字节=8比特(1Byte=8bit)
(5)1B=8bit,1KB=1024B,1MB=1024KB,1GB=1024MB…
常量:即常数,表示固定的数据
(1)字符常量 如’6’,‘a’,‘F’(不能是中文,例如:‘男’)
(2)整数常量 如6,27,-299
(3)浮点数常量 如5.43,-2.3,5.67,6.0
(4)字符串常量 如’‘625’’,’‘女’’,’‘nanbc’’,’‘西施’’
变量:如果数据的值不确定的,或者经常需要改变,或者临时取值的,则用变量取值。常量指具体数据,变量指存数据的容器,水与水桶一样。变量使用前必须先进行声明(或定义)。在内存中分配一块存储空间给变量,用于存放数据。如果要定义多个变量就要为多个变量分配不同的内存空间
1.整数型,字符型,浮点型变量的定义
变量的定义,也称之为变量的声明,或定义变量,或声明变量,实际同一个意思
int ii;//定义整数型变量,用于存放整数,关键字int,是单词integer(整数)的缩写
char cc;//定义字符串变量用关键字char,是单词charcter(字符)的缩写,存放字符
double money;//定义浮点型变量,用于存放浮点数,关键字double
2.字符串变量的定义
C语言中没有字符串这个数据类型,而是用字符数组来表达字符串
在这里插入图片描述
在这里插入图片描述
3.变量的命名
变量名属于标识符,需要符合标识符的命名规范,如下:
1)变量名的第一个字符必须是字母或下划线,不能是数字和其它字符。
2)变量名中的字母是区分大小写的。比如 a 和 A 是不同的变量名,num 和 Num 也是不同的变量名。
3)变量名绝对不可以是C语言关键字。
关键字也成为保留字,共32个
关键字也称为保留字,共32个,也就是说这些单词在C语言中有特别的含义,程序员不能把它用于变量或函数的命名。
auto :声明自动变量
break:跳出当前循环
case:开关语句分支
char :声明字符型变量或函数返回值类型
const :声明只读变量
continue:结束当前循环,开始下一轮循环
default:开关语句中的“默认”分支
do :循环语句的循环体
double :声明双精度浮点型变量或函数返回值类型
else :条件语句否定分支(与 if 连用)
enum :声明枚举类型
extern:声明变量或函数是在其它文件或本文件的其他位置定义
float:声明浮点型变量或函数返回值类型
for:一种循环语句
goto:无条件跳转语句
if:条件语句
int: 声明整型变量或函数
long :声明长整型变量或函数返回值类型
register:声明寄存器变量
return :子程序返回语句(可以带参数,也可不带参数)
short :声明短整型变量或函数
signed:声明有符号类型变量或函数
sizeof:计算数据类型或变量长度(即所占字节数)
static :声明静态变量
struct:声明结构体类型
switch :用于开关语句
typedef:用以给数据类型取别名
unsigned:声明无符号类型变量或函数
union:声明共用体类型
void :声明函数无返回值或无参数,声明无类型指针
volatile:说明变量在程序执行中可被隐含地改变
while :循环语句的循环条件
变量的初始化:在main函数内部定义的变量称为局部变量,局部变量被定义后,系统不会对其初始化,必须自己写程序初始化
1.整数型,字符型,浮点型变量初始化:
就是赋0值,也可在定义时初始化
int ii=0; // 定义整数型变量并初始化
char cc=0; // 定义字符型变量并初始化
double money=0; // 定义浮点型变量并初始化
也可以先定义,然后再初始化
int ii; // 定义整数型变量
char cc; // 定义字符型变量
double money; // 定义浮点型变量
ii=0; // 初始化ii为0
cc=0; // 初始化cc为0
money=0; // 初始化money为0
2.字符串变量的初始化
对字符串变量来说,初始化就是把内容清空。
char name[21]; // 定义一个可以存放20字符的字符串
memset(name,0,sizeof(name)); // 清空字符串name中的内容
3.未初始化的变量示例
未初始化的变量会导致在内存中可能有垃圾值。
在这里插入图片描述
在这里插入图片描述
多变量定义:int ii,jj;,const 是 constant 的缩写,意思是“恒定不变的”!它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。用 const 定义常变量方法很简单,就在通常定义变量时前面加 const 即可,如:const double pi = 3.1415926;
用 const 定义的变量的值是不允许改变的,即不允许给它重新赋值,即使是赋相同的值也不可以。所以说它定义的是只读变量。这也就意味着必须在定义的时候就给它赋初值,如果程序中试图改变它的值,编译的时候就会报错。

3.输入和输出

数据输入:编写程序的主要目的是为了处理数据,但是,数据从哪里来?数据的来源有很多种方式,如从磁盘文件中读取数据、从数据库中读取数据、从网页中抓取数据等,还有一种重要的方式就是从键盘输入数据。在C语言中,有三个函数可以从键盘获得用户输入。
getchar 用于输入单个字符。
gets 获取一行数据,并作为字符串处理。
scanf 最灵活、最复杂、最常用的数据输入函数。
数据输出:在C语言中,有三个函数可以把数据输出到屏幕。
putchar 用于输出单个字符。
puts 输出字符串。
printf函数是格式化输出函数, 用于向屏幕输出数据。
printf函数的调用方法是: printf(格式化字符串,参数列表);
1.输出描述性的文字
输出的文字用双引号包含起来,在文字最后加上\n表示换一行,多个\n可以换多行。
printf(“我心非席,不可卷也,我心非石,不可转也。\n”);
以上代码将在屏幕上输出文字:我心非席,不可卷也,我心非石,不可转也。
输出文字之后,再输出一个换行。
2.输出整数
输出的整数常量或整数变量用%d表示,在参数中列出待输出的整数常量或整数变量。
printf(“我年龄是%d岁。\n”,18);
int age=18;
printf(“我年龄是%d岁。\n”,age);
3.输出字符
输出的字符常量或字符变量用%c表示,在参数中列出待输出的字符常量或字符变量。
printf(“我姓别是:%c。\n”,‘x’); // 姓别:x-男;y-女
char xb=‘x’;
printf(“我姓别是:%c。\n”,xb);
4.输出浮点数
输出的浮点型常量或浮点型变量用%lf表示,在参数中列出待输出的浮点型常量或浮点型变量。
printf(“我体重是%lf公斤。\n”,62.5);
double weight=62.5;
printf(“我体重是%lf公斤。\n”, weight);
5.输出字符串
输出的字符串常量或字符串型变量用%s表示,在参数中列出待输出的字符串常量或字符串变量。
printf(“我的姓名是%s。\n”,“豫让”);
char name[21];
memset(name,0,sizeof(name));
strcpy(name, “豫让”);
printf(“我的姓名是%s。\n”,name);
6.输出多个内容
在这里插入图片描述
scanf输入
scanf函数是格式化输入函数, 用于向接受键盘输入的数据,用户输入数据完成后,需按回车键(Enter)结束输入。
scanf函数的调用方法是: scanf(格式化字符串,参数列表);
注意,不要在scanf的格式化字符串的最后加\n。
1.输入整数
输入整数的格式用%d表示,在参数中列出整数型变量名,用于保存输入的数据。
在输入数据之前,一般要先输出一句话提示用户。下同。
int age=0;
printf(“请输入你的年龄:”); // 提示文字不要换行,让用户在后面输入,下同。
scanf("%d",&age); // 在变量名前要加符号&,键盘输入值放入age变量中去。
2.输入字符
输入字符的格式用%c表示,在参数中列出字符型变量名,用于保存输入的数据。
char xb=0;
printf(“请输入你姓别:”);
scanf("%c",&xb); // 在变量名前要加符号&
3.输入浮点数
输入浮点数的格式用%lf表示,在参数中列出浮点型变量名,用于保存输入的数据。
double weight=62.5;
printf(“请输入你体重:”);
scanf("%lf",&weight); // 在变量名前要加符号&。
4.输入字符串
输入字符串的格式用%s表示,在参数中列出字符串变量名,用于保存输入的数据。
char name[21];
memset(name,0,sizeof(name));
printf(“请输入你姓名:”);
scanf("%s",name); // 注意了,变量名前不加符号&,也不要问原因,以后再介绍。
5.输入多个内容
调用一次scanf函数可以输入多个数据,注意了,与单个数据的输入不同,多个数据的输入要等全部的数据输入完成后才按回车键。
int age=0;
char xb=0;
double weight=0;
char name[21];
memset(name,0,sizeof(name));
printf("请输入你的姓名、姓别(x-男;y-女),年龄和体重,中间用空格分隔:");
scanf("%s %c %d %lf",name,&xb,&age,&weight); // 只有name变量前没加&,其它的都加了。
scanf函数第一个参数(格式化字符串)的格式与后面的参数列表(变量的列表)要一一对应,不能多,不能少,顺序也不能错,否则会产生意外的结果。查找头文件:man memset显示如下
在这里插入图片描述
下图1,2,3去试
在这里插入图片描述

4.运算符

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 语言内置了丰富的运算符,并提供了以下类型的运算符:
1)算术运算符
2)赋值运算符
3)关系运算符
4)逻辑运算符
5)位运算符

如下浮点数没有取余数的说法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ii++,就是ii=ii+1
在这里插入图片描述
如上赋值运算符支持的是C语言的基本数据类型,包括char int double,字符串(字符数组)不能这么赋值。
在这里插入图片描述
在这里插入图片描述
‘=‘是赋值,’==‘才是判断两个数是否相等,C语言没有’‘之间’’,’‘中间’’,’‘之内’‘或’‘在某范围内’'的关系运算符,例如年龄在25-30岁之间,只能表达为:年龄大于等于25岁并且年龄小于等于30岁。括号中表达式会优先执行,sizeof(指针)大小永远是8字节,如下是sizeof运算符,sizeof是C语言的关键字,发挥着运算符的作用。它主要用来计算某一个变量在当前系统的内存中所需占用的字节数。变量的类型包括char、int、double、数组、结构体和其它自定义的数据类型。sizeof不是函数。产生这样的疑问主要是因为sizeof的书写确实有点像函数,比如:i = sizeof(int);这样的写法,就很容易让人误以为sizeof是一个函数。sizeof有两种写法:
1.用于数据类型
sizeof使用形式:sizeof(type)
数据类型必须用括号括住。如sizeof(int)。 
printf(“sizeof(int)=%d\n”,sizeof(int)); // 输出结果:sizeof(int)=4
2.用于变量
sizeof使用形式:sizeof(var_name)或sizeof var_name 
变量名可以不用括号括住。如sizeof(var_name),sizeof var_name等都是正确形式。
printf(“sizeof dd =%d\n”,sizeof dd); // 输出结果:sizeof dd =8
printf(“sizeof(dd)=%d\n”,sizeof(dd)); // 输出结果:sizeof(dd)=8

5.if分支

不要在if(判断条件)后面加分号。有;号就为空语句,下面都执行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面等同于下面两行
if(a>b) c=a;
else c=b;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.switch分支

在这里插入图片描述
case后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量
在这里插入图片描述
default不是必须的,当没有default时,如果所有case都匹配失败,那么就什么都不执行
在这里插入图片描述

7.循环

在C语言程序中,一共有三种程序结构:顺序结构、选择结构(if和switch分支结构)、循环结构。
顺序结构:从头到尾一句接着一句的执行下去,直到执行完最后一句;
选择结构:到某个节点后,会根据一次判断的结果来决定之后向哪一个分支方向执行,由if、switch实现,前面的章节我们已经学习过。
循环结构:循环结构有一个循环体,循环体里是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次,由while、for和do while来实现。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下为死循环的两种写法,循环条件永远为真,循环体中也没有满足跳出的条件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
竖着循环9次,横着循环第几行循环几次
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
采用一个循环,输出0到100间的能整除5的数字
在这里插入图片描述

8.数组

在这里插入图片描述
在这里插入图片描述
定义数组时,数组的长度必须是整数(可以是常量,也可以是变量),数据额下标也必须是整数(可以是常量,也可以是变量)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下标越界导致程序异常中断(core dump),出现段错误
在这里插入图片描述
在这里插入图片描述
二维数组
在这里插入图片描述
二维数组的初始化也用memset
在这里插入图片描述
字符串是一个特别的字符数组,如果字符数组包含了空字符’\0’,则该数组中的内容就构成了一个字符串。’\0’可直接写成0
在这里插入图片描述
因为字符串需要用\0结尾,所以在定义字符串时,字符数组的长度要留多一个字节
char strname[21]; //定义一个最多存放20个字符或10个汉字的字符串
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
字符串数组:以0结尾的一维字符数组是一个字符串,给一维字符数组加上一维,就是字符串数组了
在这里插入图片描述
1.编写程序,从界面上输入一个字符串,计算字符串长度
如输入是"abcdaaf",显示的结果是:7 (最后是0)
在这里插入图片描述
在这里插入图片描述
2.编写程序,从界面上输入一个字符串,把字符串的每个字符从左到右一个一个显示出来
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
连着_public.c一起编译,下面.c文件中都包含_public.h
在这里插入图片描述
在这里插入图片描述
调用就是复制过程,一旦完成数据的复制,调用者程序的变量和函数的参数就再无关
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.变量的作用域

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11.指针

变量的地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对指针赋值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下cc是容器,'A’是放在容器里的东西。pcc=&cc
在这里插入图片描述
不能直接对指针赋十进制或十六进制的值,通过指针操作内存变量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数组的地址:C语言中数组名是数组元素的首地址,也是数组的地址,如下因为一个int占4字节
在这里插入图片描述
在这里插入图片描述
字符串的名字本身就是一个地址
在这里插入图片描述
在这里插入图片描述

发布了18 篇原创文章 · 获赞 113 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43435675/article/details/102701908