C语言-数组和指针(一)
指针数组和数组指针的定义
指针数组:首先是一个数组,这个数组的每个成员是一个指针变量。
数组指针:首先是一个指针,这个指针指向一个数组。
代码如下
数组和指针是同一个东西吗?
我们在很多地方都可以看到数组和指针混用的,但是数组和指针是一个东西吗?
绝对不是一个东西,数组就是数组,指针就是指针,只不过有时候批着外衣的狼。
p1是一个数组,代表10个int*变量的整体
p2是一个指针,只能代表一个指针变量,在32机里面就是一个4bytes空间大小的地址。
测试代码
p2的大小是0x28对应十进制就是40
数组作为参数传给指针
例子一
函数传参数的时候,我们正常会传一个值的拷贝过去,但是数组是一块连续的内存区域,如果直接拷贝过去,速度会很慢,而且会很占内存,所以~下面这句话
C 语言中,当一维数组作为函数参数的时候,编译器总是把它解析成一个指向其首元
素首地址的指针。
所以上面的size的值应该是4
大家可以自己测试下输出的结果
能否把指针变量本身做为参数传给函数?
看代码
大家看看这个代码有什么问题?
str传给函数的并不是函数本身,而是它的一个拷贝,我们姑且命名为str,所以p = (char*)malloc(num*sizeof(char)); 实际上是 _str = (char*)malloc(num*sizeof(char));后面再调用strcpy(str)就异常了。
函数可以这样修改
调试看str的值
一种方法是函数返回值,一种方法是二级指针,大家在写代码的时候要非常注意。
写代码研究问题,一定要理论和实践相结合,不要一味看死书,当然你考研就另说了,实践可以增加我们的理解,多看内存里的东西,这样更加靠谱。
欢迎-嵌入式Linux
觉得不错,请帮忙转发,点赞,您的每一次支持,我都将铭记于心
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/94465.html