| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C语言日记 24 指针的概念 -> 正文阅读 |
|
[C++知识库]C语言日记 24 指针的概念 |
书P92: 指针变量的赋值: (1):指向变量初始化 例1:
亦等价于:
结果: 整个程序运行过程如下: 1.利用取址运算符“&”,把a的地址赋给指针变量pa; 2:输出pa; 3.利用指针(间接寻址)运算符“*”,输出指针pa所指向的内容(的值)。 根据本例,我们可以得到如下结论: 指针变量本身表示的,就是指向的变量的地址; 所以在输出语句中直接输出指针变量(不带星号,指针变量实际上只在声明变量时要求要带星号,其他时间他只是一个变量本身)时自然输出的只是一个地址 而当我们在输出时用指针(间接寻址)运算符“*”去寻找该地址所代表的数值以后,输出的就是这个(那个指向的变量)所表达的值了 (2):指向数组初始化: 例2:
结果: 同样的(例3):
也不行,显示的报错(问题)也同上面一样; 为什么: 其中(的)“?? ?int a[5], * p = a;”表示的是声明a[5]这个数组元素而不是“数组a[5]”。 所以输出时自然会无法输入到数组当中去,认为“初始设定值太多” 而此时哪怕我们在输入数组的值时只输入一个值,此时会显示: Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.(数组越界) 即给出的数组的范围为a[0]~a[4],而我们这里却给a[5]赋了值 那么问题来了:tmd这个a[5]到底表示的是数组元素a[5]还是整个a[5]数组? 我也搞不清楚了 不过,反正只要记得:对数组的赋值语句别这么(分开)写,要记得全部放在一起写: 具体安排改动如下: 将其(例2)改为:
即可(运行) 运行结果 ?为什么这里显示数组第一个元素的取值和地址而不显示别的: 在给指针变量赋值的时候用的是数组的变量名a也就是数组的首地址(数组首元素的内存首地址) 同样的:(例3)
结果: ?同样的,这里输出的是数组第三个元素本身的取值和地址的原因为: 在给指针变量赋值时赋值的对象为a[2]本身,也就是说是数组第三个元素本身
结果: ?例6-1指针的赋值。 源程序: #include <iostream>
结果: 为什么原变量和指针变量类型要一致: 指针变量的类型不是指指针变量本身的类型,而是指它所指向的变量的数据类型。 无论何种类型的指针变量,它们都是用来存放地址的 因此指针变量自身所占的内存空间大小和它所指向的变量数据类型无关, 尽管不同类型的变量所占的内存空间不同,但不同类型指针变量所占的内存空间大小都是相同的 具体类型不一致的实例:
?结果: ?&:引用声明符 (引用:给一变量起一个别名) 例:(变量a,别名b)
此时,a、b代表同一个变量,作用相同。 设计程序证明“此时,a、b代表同一个变量,作用相同”:
结果: 我们可以发现: 在两次输出间隔里,虽然我们只修改了b的值,但是在输出的结果中a和b却都为20 而只修改a也同理:(最终结果一样)
也就是说: 即使我们只单独修改a或b的值,输出结果中的a和b也始终一样,同步变化。 这就说明实际上a和b是同一个变量,只是叫不同名字而已。 例6-2指针的引用。 源程序: #include <iostream>
结果: 其实还可以有更简便的写法:
感觉这里的“&”引用好像表示的只是引用一个已经声明过的变量 而且从这里我们不难发现: 经改为"更简便的写法"后,完全变成了本文开头“(1):指向变量初始化”的赋初值模式 所以我觉得这里的这个示例意义不大 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 12:59:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |