当前位置:网站首页>C专家编程 第4章 令人震惊的事实:数组和指针并不相同 4.5 数组和指针的其他区别
C专家编程 第4章 令人震惊的事实:数组和指针并不相同 4.5 数组和指针的其他区别
2022-08-04 04:44:00 【weixin_客子光阴】
/*数组和指针的其他区别
* 指针 数组
*保存数据的地址 保存数据
*间接访问数据,首先取得指针的内容, 直接访问数据,a[i]只是简单以a+i为地址取得数据
作为地址,然后从这个地址提取数据
如果指针有一个下标[i],就把指针
的内容加上i作为地址,从中提取数据
*通常用于动态数据结构 通常用于存储固定数目且数据类型相同的元素
*相关的函数为malloc(), free() 隐式分配和删除
*通常指向匿名数据 自身即为变量名
*/
/*数组和指针都可以在它们的定义中用字符串常量进行初始化。但底层的机制却不相同
*定义指针时,编译器并不为指针所指向的对象分配空间,它只是分配指针本身的空间,除非在
*定义的的同时赋给指针一个字符串常量进行初始化。
*/
/*为p和“breakfruit"都分配了内存空间*/
char *p = "breadfruit";
/*在ANSI C中,初始化指针所创建的字符串常量被定义为只读。如果试图通过指针修改这个
*字符的值,程序就会出现未定义的行为。
*/
float *pip = 3.14; /*错误!无法通过编译*/
/*注意只有对字符串常量才是如此,不能指望为浮点数之类的常量分配空间*/
/*数组也可以用字符串常量进行初始化*/
char a[] = "gooseberry";
/*与指针相反,由字符串常量初始化的数组是可以修改的。
*其中的单个字符在以后可以改变。
*/
例如:
strncpy(a, "black", 5);
边栏推荐
- leetcode 12. 整数转罗马数字
- 3000字,一文带你搞懂机器学习!
- Mobile payment online and offline payment scenarios
- Jenkins 导出、导入 Job Pipeline
- 【MD5】采用MD5+盐的加密方式完成注册用户和登录账号
- [Skill] Using Sentinel to achieve priority processing of requests
- Mini program + e-commerce, fun new retail
- mysql索引笔记
- Converts XML tags to TXT format (voc conversion for yolo convenient training)
- Metaverse "Drummer" Unity: Crazy expansion, suspense still exists
猜你喜欢
随机推荐
2022年PMP考试延迟了,该喜该忧?
7-3 LVS+Keepalived集群叙述与部署
[Skill] Using Sentinel to achieve priority processing of requests
Explain detailed explanation and practice
Large chain best freight d audit with what software?What are the functions?
【id类型和NSObject指针 ObjectIve-C中】
42. 接雨水
ADC噪声全面分析 -03- 利用噪声分析进行实际设计
商城系统APP如何开发 都有哪些步骤
信息学奥赛一本通 1312:【例3.4】昆虫繁殖
FFmpeg —— 通过修改yuv,将视频转为黑白并输出(附源码)
数据集类型转换—TFRecords文件
For Qixi Festival, I made a confession envelope with code
拿捏JVM性能优化(自己笔记版本)
Converts XML tags to TXT format (voc conversion for yolo convenient training)
Towards Real-Time Multi-Object Tracking(JDE)
Reproduce 20-character short domain name bypass
看DevExpress丰富图表样式,如何为基金公司业务创新赋能
7-2 LVS+DR Overview and Deployment
八年软件测试工程师带你了解-测试岗进阶之路