| |
|
开发:
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++知识库]指针的进阶 |
一、字符指针一般的使用方式为:1.单个字符
2.字符串
?pb里存放的是"abcdef"首字符 'a' 的地址 字符串常量 "abcdef"是存储在内存的只读数据区,不能通过指针对其修改,*pb='w' 表达错误,程序会挂掉。 很多编译器,在char*pb = "abcdef" 这里就会报警告 为了让代码更严谨,char*pb = "abcdef" 应改为 const?char*pb = "abcdef"?,把语法限制死,使这种写法一出现就会提醒自己。
?所以正确的代码风格写法:
const修饰指针变量的作用: 1. const如果放在*的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变。但是指针变量本身的内容可变。
-----------------------------?*p不可修改,p可修改 2. const如果放在*的右边,修饰的是指针变量本身,保证了指针变量的内容不能修改,但是指针指向的内容,可以通过指针改变。
?------------------------*p可修改,p不可修改 3.*的左右都有const,则指针变量本身和指针变量的内容都不能修改。
?----------------------*p和p都不能修改 《剑指offer》里有道题:求以下代码的输出结果
arr1和arr2为数组,arr3和arr4为指针。它们的输出结果如下:
1.用相同的常量字符串去初始化 ,不同的数组的时候就会开辟出不同的内存块。arr1和arr2均为字符串首字符 ' a ' 的地址,但是两数组存放常量字符串 "abcdef" 的地址不同,所以arr1和arr2(实为首字符存放地址比较)自然不相等。
2.C/C++会把常量字符串存储到单独的一个内存区域,当几个指针指向同一个常量字符串的时候,他们实际会指向同一块内存。这里arr3和arr4均为字符指针,指向的是同一个常量字符串。所以arr3和arr4所指向的首字符地址自然相同。
所以arr1和arr2不相同,arr3和arr4相同。
typedef是创造一个新的类型,如int,char等类型。(如上代码,typedef创造出了一个新的类型pint,但是作用和int*一模一样) #define是换了另一种表达方式来表达,相当于替换。(如上代码,用 PINT 来表示 int*) 二、指针数组指针数组是一个存放指针的数组。
运行结果: ? |
|
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图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:13:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |