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++指针与引用

#include "iostream"
using namespace std;
#include "assert.h"
void Swap(int *ap,int *bp)
{
?? ?assert(ap == NULL || bp == NULL);//判断指针是否为空
?? ?int tmp = *ap;
?? ?*ap = *bp;
?? ?*bp = tmp;
}
int *funa()
{
?? ?int a = 10;

?? ?return &a;//错误,函数结束,空间释放了,下一个函数可使用该空间,所以不可返回引用或指针,若生存期不受函数影响则可以
}
int main()
{
?? ?/*char ch;
?? ?int a;
?? ?double x;
?? ??? ?char str[20];
?? ??? ?cin >> ch >> a >> x >> str;
?? ??? ?cout << ch << "\t" << a << "\t" << x << str << endl;
?? ??? ?return 0;*/

?? ?int a = 10, b = 20;
?? ?int* const p = &a;//*p=100,p=&b;
?? ?int* s1 = p;
?? ?const int* s2 = p;
?? ?int* const s3 = p;
?? ?const int* const s4 = p;

?? ?cout << *s4<< endl;
?? ?return 0;
?? ?可以取地址 左值
?? ?不可以取地址 右值

?? ?int a = 10;
?? ?int b = a;//左值引用,可以取地址?
?? ?int& c = a;//&c是a的别名,引用//&c为a的地址,用地址来引用a
?? ?int& d = c;
?? ?int&& x = 10;//不是引用的引用,右值引用,不可以取地址?
?? ?x += 10;
?? ?a += 10;
?? ?cout << c <<'\t' << d << '\t' << &c << '\t' << &d << '\t' << x << '\t' << &x << endl;
?? ?int a = 10;
?? ?int* p = &a;
?? ?int* p; p = &a;
?? ?int& c = *p;
?? ?cout << p << '\t' << *p << '\t' << c << '\t' << &c << '\t' << &a<<endl;

?? ?引用必须初始化,没有空引用
?? ?int a = 10;
?? ?const int b = 20;
?? ?int &x = a;
?? ?const int &y = a;//常引用不可修改
?? ?int const &m = a;
?? ?int c = y;
?? ?y += 10;错
?? ?常量必须使用常引用
?? ?普通变量二者都可以
?? ?int&& x = 10;
?? ?int x = 10;
?? ?/*int x = 10, y = 20;
?? ?Swap(&x, &y);
?? ?cout << x << y << endl;*/
?? ?int ar[5] = { 1,2,3,4,5 };
?? ?int* p = &ar[0];//int *p=ar;
?? ?int*& s = p;//指针引用//s是地址=ar,&s是地址的地址,*&s=ar
?? ?int& x = ar[0];//&x=ar
?? ?int(&br)[5] = ar;//数组的引用,引用数组必须两个属性,长度,数组名,引用的是整个数组
?? ?int* q = ar;
?? ?int(*m)[5] = &ar;//数组指针?? ??? ?sizeof(m)?? ?4?? ?unsigned int ??? ??? ?sizeof(br)?? ?20?? ?unsigned int ?? ??? ?sizeof(*m)?? ?20?? ?unsigned int
?? ??? ??? ?*m?? ?0x00effb44 {1, 2, 3, 4, 5}?? ?int[5] ? ?? ??? ?m?? ?0x00effb44 {1, 2, 3, 4, 5}?? ?int[5] *
?? ? ??? ?ar?? ?0x00effb44 {1, 2, 3, 4, 5}?? ?int[5] ? ? ? ??? ??? ?br?? ?0x00effb44 {1, 2, 3, 4, 5}?? ?int[5] &
?? ?int(*m)[5] ? (*m)[5]=&ar
?? ?int ar[5] = { 1,2,3,4,5 };
?? ?int * ip = ar;
?? ?int& c = ar[0];
?? ?++ip;//地址+1 ar+1 ?ar=1,2,3,4,5 ? *ip=2
?? ?++c;//0下标加1 ar=2,2,3,4,5 ? c=2 ?会改变实体值
?? ?int * ip = NULL;
?? ?ip = funa();
?? ?cout << *ip << endl;//错误,失效指针


}


?? ?
?

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

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