C语言基础知识
sizeof获取数据类型的占用内存空间大小
按照我以为的思维 结果应该是result为0,num为10
但是现在结果是 result 0 num 是11
首先使用随机数 需要导入随机数的头部文件
<stdlib.h> 如果以时间为随机种子需要导入<time.h>
rand的取值范围是0 - 32767之间
例子如果去随机数5-15之间
那么 rand() % 11 + 5
取 a -b 之间
随机数公式 rand() % (b-a+1)+a
延迟的意思
Sleep(5) 延迟5毫秒必须要加入头文件<windows.h>
思考
那如果是{"测试","测试1","测试2","测试3","测试4"};这种的字符数组怎么定义?
如果改变 *指针变量名的值 原来的变量值也会改变
---------- 拓展 -------------
指针的值一般是 十六进制
%x 输出结果十六进制小写字母且去头部0详情看例子
注意指针变量赋值一定要用取地址符,不能直接赋值为十六进制的但是可以赋值为NULL
int * test = NULL;
简单的例子
取指针变量的值
注意指针也有指针哦
通过这个例子我们知道数组名,他就是指针数组的首地址;
指针参与运算
我们知道输出指针名它是会输出十六位的内存地址的,所以每次运行指针像下位移,位移多少长度 我们这里定义的是double类型的数组,double占8个空间,所以每次运行ptr都像下运行8个位置
拓展指针运算
对比以下这几句,看看结果会是什么?
看运行结果我们对比下,在分析:
运行拓展第一次:
运行拓展第二次:
运行拓展第三次:
指针不止+1哦
数组的尾地址
二维数组的指针
理解字符串数组与字符指针的区别
我们可以发现 字符指针 只是把字符串的地址给了这个指针,而数组字符,则是开辟一个新的内存空间存放这个字符
常用的内置方法
malloc()动态分配内存
calloc()动态分配内存意义与malloc一致(推荐使用)
定义一个函数找到数组中某个数值的下标
这样就会改变外部变量!因为我们传了指针进去直接改变指针指向的值,当然会被改变
用法
这个例子中我们不加static 或者改成auto,那么结果打印始终是1,因为每次运行num函数中a都会被重新赋值为0;
新建.h为后缀名的文件
我们新建文件名为test.h
一般用来定义常量
extern申明变量在另一个文件中
如现在有两个.c文件 main.c 、test.c
如果test.c有个全局变量a 那么定义
嵌套结构
简化结构体的定义与使用
结构体中含有多个属性(结构体)
结构数组
这次我们把所有的功能放在头文件中使用
新建hero.h头文件以及hero.c
hero.c我们先填几个玩家以及职业,后期可以拓展进行职业类的添加函数
结果:
或者传指针
我们创建两个文件一个《game.h》《game.c》
game.h
game.c实现文件
运行效果
1、enum ->枚举
2、union多选一