数组是一个什么 什么是字节型数组( 二 )


文章插图
文章插图
这看起来很有用 , 但是真的如此吗?这看起来很有用 , 但真的是这样吗?
这看起来很有用 , 但真的是这样吗?得到答案最简单直接的方法就是实验 。为此 , 我们编写了下面的C语言代码 , 请看:
void fun(char (*p)[10]){ //...}int main(){ char arr_5[5]; char arr_10[10]; fun(&arr_5); fun(&arr_10); return 0;}

数组是一个什么 什么是字节型数组

文章插图
文章插图
C语言代码void fun(char (*p)[10]){ //...} int main(){ char arr _ 5[5];char arr _ 10[10];乐趣(& amparr _ 5);乐趣(& amparr _ 10);返回0;}C语言代码
编译并执行这段C语言代码以获得以下输出 , 请参见:
数组是一个什么 什么是字节型数组

文章插图
文章插图
编译器发出了警告信息编译器发出了警告消息 。
不出所料 , 当长度为5的arr_5作为参数传递给fun()函数时 , 编译器会发出警告消息 。这样一来 , C语言本身就会提醒程序员修改代码 , 遵守fun()函数的预期内存长度 。
最后
可见数组指针在C语言程序开发中有其独特的作用 。可以用来限制接收指针索引的函数的内存长度 , 用编译器来规范程序项目 。还值得注意的是 , 在定义数组指针时 , C语言中的typedef关键字通常可以使代码更具可读性:
typedef int Vector3d[3];void transform(Vector3d *vector);/* equivalent to `void transform(int (*vector)[3])` */...Vector3d vec;...transform(&vec);
数组是一个什么 什么是字节型数组

文章插图
文章插图
点个赞再走吧typedef int vector 3d[3];void变换(vector 3d * vector);/*等效于` void transform(int(* vector)[3])`*/...Vector3d vec...转换(& ampvec);走之前夸我一句 。
欢迎在评论区一起讨论提问 。文章都是手工原创 , 每天用最简单的方式介绍C语言、linux等嵌入式开发 。如果你喜欢我的文章 , 就关注一下 , 可以看到最近的更新和之前的文章 。
未经许可 , 禁止复制 。