第三章遇到的问题&搜到的解释2
来源:互联网 发布:mac 照片很大 找不到 编辑:程序博客网 时间:2024/06/06 10:51
字符数组
char str[10] = {“hello world”};
当编译器遇到这句时,会把str数组中从第一个元素把hello world\0 逐个填入。。
由于C语言中没有真正的字符串类型,可以通过字符数组表示字符串,因为它的元素地址是连续的,这就足够了。
C语言中规定数组代表数组所在内存位置的首地址,也是 str[0]的地址,即str = &str[0];
而printf(“%s”,str); 为什么用首地址就可以输出字符串?
举例:
char *s ;
s = “China”;
为什么可以把一个字符串赋给一个指针变量?
C语言中编译器会给字符串常量分配地址,如果 “China”, 存储在内存中的 0x3000 0x3001 0x3002 0x3003 0x3004 0x3005 .
s = “China” ,其实真正的意义是 s =”China” = 0x3000;
你把China 看作是字符串,但是编译器把它看作是地址 0x3000,即字符串常量的本质表现是代表它的第一个字符的地址
s = 0x3000
printf(“%s “, s),它的原理其实也是通过字符串首地址输出字符串,传给它的其实是s所保存的字符串的地址,所以,printf(“%s”,0x00422020);也是等效的
操作字符串是通过它在内存中的存储单元的首地址进行的,这是字符串的终极本质。
阅读全文
0 0
- 第三章遇到的问题&搜到的解释2
- 第三章遇到的问题&搜到的解释1
- 第三章遇到的问题&搜到的解释3
- 第三章遇到的问题&搜到的解释4
- 第三章 redis的api操作及遇到的问题
- 使用中间第三方类库中遇到的问题
- 添加第三方库遇到的问题
- 第三方分享遇到的特殊问题
- 第三方登陆遇到的 问题
- 第三方支付遇到的问题
- iOS ShareSDK 分享到第三方遇到的bug
- ②新人学C#遇到的一些词语解释问题
- 由于疏忽导致调试时遇到不可解释的问题
- 从GCC3.2到GCC3.4遇到的问题
- 从GCC3.2到GCC3.4遇到的问题
- 到今天为止遇到的问题
- vs2003升级到vs2005遇到的问题
- apache搬家到iis遇到的问题
- java开发大全、系列文章、精品教程
- 排序算法之选择和插入排序的简单优化
- <基础原理进阶>机器学习算法python实现【3】--文本分析之朴素贝叶斯分类器
- 玄学的浮点型的整数型输出
- Elasticsearch常用插件集合
- 第三章遇到的问题&搜到的解释2
- Logistic回归简介及python代码实现
- opencv 矩阵运算(与python的numpy库略有差异)
- Elasticsearch 5.0下Java API使用指南
- MATLAB图像取点操作
- GROMACS运行参数之em_real.mdp文件详解
- Java数据结构详解(七)-TreeSet
- 2015-2016 Northwestern European Regional Contest (NWERC 2015) E
- 【笔记】2、初学python3网络爬虫——爬虫的基本原理