重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
目录
成都创新互联主营安塞网站建设的网络公司,主营网站建设方案,成都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(); |
while | while循环 |
for | for循环 |
switch | 多分支,与case、default搭配使用 |
case | switch中的匹配语句 |
default | case匹配失败的,则由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;
}
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;
}
ii.static修饰全局变量:静态全局变量
—— 全局变量具有外部链接属性,其他文件的全局变量,我们可以使用extern关键字来引用;static修饰全局变量后,该全局变量就不具有了外部链接属性(该全局变量只能在本文件内访问)
#includeextern int sum;//引用外部全局变量:因为全局变量具有外部链接属性
int main()
{
printf("%d\n", sum);
return 0;
}
add.c
int sum = 100;
#includeextern int sum;//因为sum的外部链接属性不存在了,所以无法引用这个变量
int main()
{
printf("%d\n", sum);//找不到sum变量
return 0;
}
add.c
//使全局变量的外部链接属性不存在,只能在本文件使用,不能被外部文件使用
static int sum = 100;
iii.static修饰函数:静态函数
—— static修饰函数和修饰全局变量一样,使函数的外部链接属性不存在,只能在本文件内使用
三.#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.变量是在内存中分配空间的,每个内存单元都有地址,即变量也是有地址的
#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位机器下指针变量大小
64位机器下指针变量大小
五.结构体(初识)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;
}
六.总结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元起,快前往官网查看详情吧