網(wǎng)站首頁 編程語言 正文
1、指針
在計(jì)算機(jī)中,數(shù)據(jù)是存放在內(nèi)存單元中的,一般把內(nèi)存中的一個(gè)字節(jié)稱為一個(gè)內(nèi)存單元。為了更方便地訪問這些內(nèi)存單元,可預(yù)先給內(nèi)存中的所有內(nèi)存單元進(jìn)行地址編號,根據(jù)地址編號,可準(zhǔn)確找到其對應(yīng)的內(nèi)存單元。由于每一個(gè)地址編號均對應(yīng)一個(gè)內(nèi)存單元,因此可以形象地說一個(gè)地址編號就指向一個(gè)內(nèi)存單元。C 語言中把地址形象地稱作指針。
主要就是兩個(gè)運(yùn)算符:&和*。 & 表示求地址,*表示求地址中的值,*也可以用來定義指針(int *p表示整型指針);
int a=1;
int *p=&a;
printf("%d",p);
//p就輸出a的地址了
1 錯(cuò)誤:&a地址只能賦值給指針變量。
int a=11;
int p=&a;
2 錯(cuò)誤,第二行賦值的時(shí)候不用加上*。
int *p,a;
*p=&a; //錯(cuò)誤,指針變量是p而不是*p
3 指針定義了之后一定要使用,不然會報(bào)錯(cuò)。
4 指針類型要和數(shù)據(jù)類型一致,不同的類型之間不可以使用指針
2、引用
引用引入了對象的一個(gè)同義詞。定義引用的表示方法與定義指針相似,只是用&代替了*。引用(reference)是c++對c語言的重要擴(kuò)充。引用就是某一變量(目標(biāo))的一個(gè)別名,對引用的操作與對變量直接操作完全一樣。其格式為:類型 &引用變量名 = 已定義過的變量名。
引用的特點(diǎn):
①一個(gè)變量可取多個(gè)別名。
②引用必須初始化。
③引用只能在初始化的時(shí)候引用一次 ,不能更改為轉(zhuǎn)而引用其他變量。
例子中,a、b作為n1、n2的引用,
#include<iostream>
using namespace std;
void Swap(int & a, int & b)
{ //交換a、b的值
int tmp;
tmp = a; a = b; b = tmp;
}
int main()
{
int n1 = 100, n2 = 50;
Swap(n1, n2); //n1、n2 的值被交換
cout << n1 << " " << n2 << endl; //輸出 50 100
}
定義引用時(shí),可以在前面加 const 關(guān)鍵字,則該引用就成為“常引用”。如:
int n;
const int & r = n;
上面的語句定義了常引用 r,其類型是 const int &。
常引用和普通引用的區(qū)別在于:不能通過常引用去修改其引用的內(nèi)容。注意,不是常引用所引用的內(nèi)容不能被修改,只是不能通過常引用去修改而已,但可以用別的辦法修改。例如下面的程序片段:
int n = 100;
const int & r = n;
r = 200; //編譯出錯(cuò),不能通過常引用修改其引用的內(nèi)容
n = 300; //沒問題,n的值變?yōu)?00
原文鏈接:https://blog.csdn.net/echo_gou/article/details/124837254
相關(guān)推薦
- 2023-04-03 GoLang中拼接字符串性能優(yōu)化方法詳解_Golang
- 2022-12-21 Swift使用enum抹平數(shù)組元素差異實(shí)例詳解_Swift
- 2022-07-28 Redis基本數(shù)據(jù)類型Zset有序集合常用操作_Redis
- 2022-08-01 Python+pyecharts繪制雙動態(tài)曲線教程詳解_python
- 2022-04-14 解決Mac環(huán)境下zsh: command not found:
- 2023-01-03 C#短消息提示窗口位置及窗口大小詳解_C#教程
- 2022-04-18 啟動項(xiàng)目: getaddrinfo ENOTFOUND localhost
- 2022-12-23 Kubernetes應(yīng)用配置管理創(chuàng)建使用詳解_云其它
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支