我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

练气五层——初识C语言基本结构二-创新互联

目录

成都创新互联主营安塞网站建设的网络公司,主营网站建设方案,成都app软件开发公司,安塞h5小程序制作搭建,安塞网站营销推广欢迎安塞等地区企业咨询

一.修炼必备

二.关键字

三.#define定义常量和宏(初识)

四.指针(初识)

五.结构体(初识)

六.总结

!!!恭喜你,成功突破至练气五层!!!


一.修炼必备

1.入门必备:VS2019社区版,下载地址:Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 (microsoft.com)

2.趁手武器:印象笔记/有道云笔记

3.修炼秘籍:牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 (nowcoder.com)

4.雷劫必备:leetcode 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 

注:遇到瓶颈怎么办?百度百科_全球领先的中文百科全书 (baidu.com)

二.关键字

1.关键字使用规则

auto自动变量,局部变量
break跳出switch分支和循环的关键字
continue结束当前循环,执行下一次循环
do与while联合使用:do while();
whilewhile循环
forfor循环
switch多分支,与case、default搭配使用
caseswitch中的匹配语句
defaultcase匹配失败的,则由default执行
char字符型数据类型
short、int、long、long long短整型、整型、长整型、长长整型
float、double单精度浮点数、双精度浮点数
const把变量变成常变量,常变量的值不能改变
if条件语句
if - else单分支条件语句
if - else if - else if …… else多分支条件语句
enum枚举类型
extern引用外部全局变量
goto无条件跳转语句
register寄存器
return函数中返回值
signed有符号的,一般与数据类型搭配
unsigned无符号的,一般与数据类型搭配
sizeof得到对象或类型的存储字节大小
static静态的,一般与数据类型搭配
struct结构体
typedef类型重定义
union联合体(共用体)
void用于函数无返回值,或形参列表无参数
volatile防止编译器对代码进行优化 

2.typedef关键字

  —— 对数据类型进行重定义(重命名)

#includetypedef unsigned int unit; //把无符号整型重命名为unit
int main()
{
	unit a = 10;
	printf("%u\n", a);//%u是打印无符号整型
	return 0;
}

1125df75d8e741cf824cea7d0c70ee7e.png

3.static关键字

  i.static修饰局部变量:静态局部变量

—— 静态局部变量只被初始化一次,static改变了局部变量的生命周期,从一开始的该局部变量出了所在的{}后消失,但被static修饰后,该局部变量直到程序结束前都是一直存在的(在静态区),且静态局部变量只对定义自己的函数体始终可见(也就是说,只在自己的{}内有用)

#includevoid test(int i)
{
	static int j = 10;//静态局部变量,只会初始化一次,随着程序结束而结束
	j++;
	printf("i = %d j = %d\n", i, j);
}

int main()
{
	int i = 0;
	for (i = 0; i< 10; i++)
	{
		test(i);
	}
	return 0;
}

d15c0d169ef642d8bfcdfbb84fb35710.png

  ii.static修饰全局变量:静态全局变量

—— 全局变量具有外部链接属性,其他文件的全局变量,我们可以使用extern关键字来引用;static修饰全局变量后,该全局变量就不具有了外部链接属性(该全局变量只能在本文件内访问)

#includeextern int sum;//引用外部全局变量:因为全局变量具有外部链接属性
int main()
{
	printf("%d\n", sum);
	return 0;
}



add.c

int sum = 100;

4068c3feeba8447d80b621a37614f452.png

#includeextern int sum;//因为sum的外部链接属性不存在了,所以无法引用这个变量
int main()
{
	printf("%d\n", sum);//找不到sum变量
	return 0;
}



add.c

//使全局变量的外部链接属性不存在,只能在本文件使用,不能被外部文件使用
static int sum = 100;

d1dbed4c1a6048f4b69422fa71ab1cd0.png

  iii.static修饰函数:静态函数

—— static修饰函数和修饰全局变量一样,使函数的外部链接属性不存在,只能在本文件内使用

108287f39f3d42e09267eb95d752d28e.png

三.#define定义常量和宏(初识)

1.#define定义常量

#include#define MAX 100
int main()
{
	printf("%d\n", MAX);//100
	return 0;
}

2.#define定义宏(后面详解)

#include//#define定义宏
#define sum(a,b) ((a)+(b))

int main()
{
	printf("%d\n", sum(10, 20)); //30
	return 0;
}

注:以“#”开头的均为预处理命令,“define”为宏定义命令;在宏定义时,我们尽量给要进行的操作加上括号

question:#define定义宏和函数有什么区别?(后面解答)

四.指针(初识)

1.内存

  i.内存是电脑上重要的存储器,计算机中程序的运行都是在内存中进行的

  ii.内存被划分为一个个小的内存单元,每个内存单元的大小是1字节

  iii.变量是在内存中分配空间的,每个内存单元都有地址,即变量也是有地址的

                                      3249edbe2a904243a99041b7124c462a.png

#includeint main()
{
	int a = 10;//向内存申请4个字节的空间储存10
	return 0;
}

2.地址是如何产生的?

 —— 32/64位机器上,32根/64根地址线(电线),电线是有通电的两种状态:高电位和低电位,转化为数字信号就是1/0,32/64个1/0组成的数字既是地址

3.取出变量的地址(&)

#include//使用&符号取出变量的地址
int main()
{
	int num = 0;
	scanf("%d", &num);//输入函数,&是取num变量的地址,输入的数放在num的地址中
	#//取出num的地址
	//使用%p打印地址信息
	printf("%p\n", &num);//006FF9E0:地址随机产生,每次产生的地址不同
	return 0;
}

4.如何储存地址?

 —— 定义指针变量进行存储

 指针变量:用指针储存一个变量的地址信息

  i.指针的形式:

char*
int*
long*
float*
double*
…………

  ii.指针变量的使用 

#includeint main()
{
	int a = 10;
	int* pa = &a;//&a取出了a的地址,使用pa进行储存a的地址,pa即为指针变量
    char* c = 'a';
    char* pc = &c;
	return 0;
}

5.指针变量的大小

  i.32位机器上,指针变量的大小为4个字节

  ii.64位机器上,指针变量的大小位8个字节

#includeint main()
{
	//sizeof求数据类型或对象的字节大小
	printf("char* =%d\n", sizeof(char*));
	printf("short* =%d\n", sizeof(short*));
	printf("int* =%d\n", sizeof(int*));
	printf("long* =%d\n", sizeof(long*));
	printf("long long* =%d\n", sizeof(long long*));
	printf("float* =%d\n", sizeof(float*));
	printf("double* =%d\n", sizeof(double*));
	return 0;
}

 32位机器下指针变量大小

bd642895df134a709aa27a19b4cec20a.png

64位机器下指针变量大小 

c08a62f6575040da856cbb8ec86be787.png

五.结构体(初识)

1.什么是结构体?

 —— C语言中想要描述某一事物更加的细致,不可能单单靠几个数据类型就能解决,我们需要使用复杂类型才能把某一事物描述的更加细致,而结构体有能力做到这个

2.认识结构体(struct)

#include//描述学生的结构体
struct student
{
	char name[12];//姓名
	char sex;//性别
	int age;//年龄
};

int main()
{
	return 0;
}

3.初始化结构体

#includestruct student
{
	char name[12];
	char sex[2];
	int age;
};

int main()
{
	struct student stu = { "小明",'男',18 };//声明结构体变量stu并初始化结构体变量
	return 0;
}

4.访问结构体成员信息

  i.使用.去访问结构体成员的信息

#includestruct student
{
	char name[12];
	char sex[3];
	int age;
};

int main()
{
	struct student stu = { "小明","男",18};//声明结构体变量并初始化结构体变量
	//打印结构体变量的信息:使用.去访问结构体的成员信息
	printf("name = %s sex = %s age = %d\n", stu.name, stu.sex, stu.age);
	return 0;
}

  ii.使用(*xx).xx或->去访问结构体指针的成员信息

#includestruct student
{
	char name[12];
	char sex[3];
	int age;
};

int main()
{
	struct student stu = { "小明","男",18 };//声明结构体变量并初始化结构体变量
	struct student* p = &stu;//指针p储存了stu的地址
	//使用(*xx).xx或->去访问结构体指针的成员信息
	printf("%s %s %d\n", (*p).name, (*p).sex, (*p).age);
	printf("%s %s %d\n", p->name, p->sex, p->age);
	return 0;
}

03da9df65ad74047b26d3831ab5d2f26.png

六.总结

1.常用关键字

2.typedef关键字的作用

3.static关键字

  1)修饰局部变量 

  2)修饰全局变量

  3)修饰函数

4.#define的作用

  1)定义常量 

  2)宏定义

5.指针:

  1)内存的解释 

  2)每个单元内存的大小 

  3)地址的产生

  4)指针的形式 

  5)指针变量的使用 

  6)指针变量的大小

6.结构体

  1)为什么需要复杂结构类型?

  2)结构体的样式

  3)结构体的初始化

  4)结构体的成员访问

!!!恭喜你,成功突破至练气五层!!!

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前文章:练气五层——初识C语言基本结构二-创新互联
URL标题:http://mswzjz.cn/article/cophcs.html

其他资讯