数组类型不是C的基本数据类型型可以理解为固定内存大小的别名比如int类型,就是表示占用4字节的内存
不同数组类型不是C的基本数据类型型占据内存空间不一样,寫代码测试:
可见a用数组名代表数组首元素地址,a+1则代表数组第二个元素地址大4个字节正好
但是, &a+1却比&a大了40个字节都是指针加1为什麼相差的内存地址差这么多?
因为a代表数组首元素地址 &a代表的是整个数组的地址。a是int指针&a却是int数组a的指针,数组类型不是C的基本数据類型型不一样指针的步长也不一样
①给数组定义别名
②给结构体定义别名
PS: C语言是这么规定的,但是有的IDE(如Visio Studio)做了优化可以直接用student定义結构体变量。虽然在这些IDE里可以但是语法其实是错误的。
下面给该结构体定义别名:
①可以做数组类型不是C的基本数据类型型的封装
比如声明个结构体类型Student
②可以用于函数返回值和函数参数
①void 用于函数返回值和函数参数 表示无类型
②void* void* 指针可以强制转换成任意类型指针,也可以把任意类型指针转换成 void* 指针如下:
PS: src和dest都是char型数组,为什么说是char *指针呢c语言中数组做函数参数是就是自动当作指針处理。可以用sizeof操作符验证下
发布了96 篇原创文章 · 获赞 8 · 访问量 2万+