博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 下C语言 指针学习 二 (数组与指针)
阅读量:5344 次
发布时间:2019-06-15

本文共 766 字,大约阅读时间需要 2 分钟。

很多人常常会认为指针与数组有着相当暧昧的关系,其实数组并不代表指针,数组的出现是为了把具有相同类型的若干变量按有序的形式组织起来。而指针的出生是为了通过指针去访问内存单元,这是文档上介绍的,读起来毫无瑕疵,因为太过官方,我所认知的数组其实就是在内存上申请一块固定大小的连续空间,注意是连续的空间哦,并且这块空间只能存放同一类型的数据,何为同一类型呢,比如说 int a[10];  假设这句代码是在函数里的,所以会在栈中申请一块大小为sizeof(int)*10 的空间来存放int类型的数据,如果你不知道为什么会在栈里申请的话,我就在插一句话,如果知道就跳过这句话:c程序在运行时共有两个存储区,一个是静态存储区,另一个是动态存储区,在动态存储区里有一个栈和一个堆,函数就存储在栈上,在函数声明的变量也自然存储在栈中,不要问我为什么,这就是规定。

指针不管在什么情况,永远都是那么大的空间,(无符号整型的大小),而数组的大小要看声明的大小。声明多大,他就多大,标识符a即表示数组,他记录了这个数据的头指针。可以把这个头指针值赋给一个指针类型的变量,这样这个指针类型的变量就指向了这个数组的头位置;

        对于字符数组数组而言,比如说char buf[10]="I AM WK“, 在这句话中,双引号里面的内容是放在静态存储区的,这句话实际上是把静态存储区的"I AM WK" 完全复制到自己的空间里,而 char *p="I AM WK“  是把 静态存储区的"I AM WK" 的首地址 赋给p , 这个静态存储区的字符串是一个常量,是不可更改的,所以当你用    *p="ssss"  这样的复制语句的时候编译会不通过。

转载于:https://www.cnblogs.com/WK-can-do-anything/p/5792228.html

你可能感兴趣的文章
HTML5树叶飘落动画
查看>>
Flume笔记--source端监听目录,sink端上传到HDFS
查看>>
shell脚本采集系统cpu、内存、磁盘、网络信息
查看>>
使用JSONObject.fromObject的时候出现“There is a cycle in the hierarchy”异常 的解决办法...
查看>>
mysql 数据操作 单表查询 limit 练习
查看>>
由于网站数据过大,导致内存不足。终于找到解决办法
查看>>
常用函数编写
查看>>
hdoj 5124lines
查看>>
centos给文件夹改变所有关系
查看>>
Android LCD
查看>>
FreeRTOS之全配置项详解、裁剪(FreeRTOSConfig.h)
查看>>
ARM的启动代码(1):介绍(转)
查看>>
九度 1479:移位和旋转
查看>>
前后台交互,使用ajax传输参数,可是没有跳转到后台的路径中
查看>>
django 获取request请求对象及response响应对象中的各种属性值
查看>>
[2] 智能指针
查看>>
[cf557d]Vitaly and Cycle(黑白染色求奇环)
查看>>
【C#】#if DEBUG 与 如何更好更快的debug
查看>>
AngularJS中转换响应内容
查看>>
STM32学习笔记(四) RCC外设的学习和理解
查看>>