IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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++指针基础知识总结 -> 正文阅读

[C++知识库]C++指针基础知识总结

1. 指针的定义和使用方式

int a = 10;

int *p = &a;

*p = 100; // * 为解引用操作

2. 指针所占的内存空间

32位系统为四个字节(无论指向的数据类型是什么), 64为系统为8个字节。

3. 空指针

int* p = NULL;

int* p = nullptr;

4. 野指针

int* p = (int *)0x0100 //直接指向特定的地址,会报错。

5. const 修饰指针

(1) const int *p? 常量指针(const在前,*在后),指针的指向可以发生变化,但指向的内容不可变。

Int a = 10;

Int b = 20;

Int *p = &a;

*p = 20; // 错误的操作,指向的内容不可以修改

p = &b; //正确

(2) int * const p? 指针常量(*在前,const在后),指针指向的内容可以变化,但指向的位置不可变化。

Int * const p2 = &a;

*p2 = 100 //正确

p2 = &b //错误,指针的指向不可以修改

(3) const int * const p? 指针指向和内容都不能改变。

const int * const p = &a;

*p3 = 100; //错误

p3 = &b; //错误

简记:const在谁的前面,谁不能改变。

6. 指针和数组

数组的名称就是数组的首地址,所以可以使用指针访问数组。

int arr[10] = {1,2,3,4,5,6,7,8,9}

int* p = arr; //不需要取值符号&,因为数组名字就是地址。

cout << *p << endl; //输出第一个元素

p++; // 让指针偏移一个单位,整形为4个字节

cout << *p << endl; //输出第二个元素

/*遍历数组*/

int *p2 = arr;

for(int i=0;i<10; i++)

{

???????? cout << *p2 <<endl;

}

指针和数组名都表示地址,但可以修改指针的值,而数组名是常量不可修改。

p++; //指针,允许

arr++; // 数组名,不允许

sizeof(arr)将返回整个数组所占用的字节数,而sizeof(p)返回指针所占的字节数(4个字节)。

使用new创建动态结构

int* p = new int [size] // 创建动态数组,运行时为数组分配空间

delete [] p;? //释放空间

cout输出的不同

?? ?char x[] = "123456";
?? ?char* p = x;
?? ?cout << x << endl; //输出为123456,整个字符串
?? ?cout << *p << endl; //输出为1,第一个字符

7. 指针和函数

在函数体内修改实参的数值。

void swap(int* p1, int* p2)

{

Int temp = *p1;

*p1 = *p2;

*p2 = temp;

}

int a = 10;

int b = 20;

swap(a, b); // 地址传递可以修改实参,值传递不可以(值传递是在别的内存中重新创建变量进行计算)。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-31 16:26:28  更:2021-07-31 16:26:41 
 
开发: 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/23 1:15:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码