網(wǎng)站首頁 編程語言 正文
一維數(shù)組名稱的用途:
可以統(tǒng)計(jì)整個(gè)數(shù)組在內(nèi)存中的長(zhǎng)度
可以獲取數(shù)組在內(nèi)存中的首地址
示例:
int main() { //數(shù)組名用途 //1、可以獲取整個(gè)數(shù)組占用內(nèi)存空間大小 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; cout << "整個(gè)數(shù)組所占內(nèi)存空間為: " << sizeof(arr) << endl; cout << "每個(gè)元素所占內(nèi)存空間為: " << sizeof(arr[0]) << endl; cout << "數(shù)組的元素個(gè)數(shù)為: " << sizeof(arr) / sizeof(arr[0]) << endl; //2、可以通過數(shù)組名獲取到數(shù)組首地址 cout << "數(shù)組首地址為: " << (int)arr << endl; cout << "數(shù)組中第一個(gè)元素地址為: " << (int)&arr[0] << endl; cout << "數(shù)組中第二個(gè)元素地址為: " << (int)&arr[1] << endl; //arr = 100; 錯(cuò)誤,數(shù)組名是常量,因此不可以賦值 system("pause"); return 0; }
二維數(shù)組數(shù)組名
- 查看二維數(shù)組所占內(nèi)存空間
- 獲取二維數(shù)組首地址
示例:
int main() { //二維數(shù)組數(shù)組名 int arr[2][3] = { {1,2,3}, {4,5,6} }; cout << "二維數(shù)組大小: " << sizeof(arr) << endl; cout << "二維數(shù)組一行大小: " << sizeof(arr[0]) << endl; cout << "二維數(shù)組元素大小: " << sizeof(arr[0][0]) << endl; cout << "二維數(shù)組行數(shù): " << sizeof(arr) / sizeof(arr[0]) << endl; cout << "二維數(shù)組列數(shù): " << sizeof(arr[0]) / sizeof(arr[0][0]) << endl; //地址 cout << "二維數(shù)組首地址:" << arr << endl; cout << "二維數(shù)組第一行地址:" << arr[0] << endl; cout << "二維數(shù)組第二行地址:" << arr[1] << endl; cout << "二維數(shù)組第一個(gè)元素地址:" << &arr[0][0] << endl; cout << "二維數(shù)組第二個(gè)元素地址:" << &arr[0][1] << endl; system("pause"); return 0; }
?補(bǔ)充:C++/C中 sizeof(指針)和sizeof(數(shù)組名)的區(qū)別
#include <iostream> using namespace std; template<class T> int length(T& data) {undefined return sizeof(data)/sizeof(data[0]); } int main(){undefined int data[]={2,45,7,8,9,23,4,6,7,8,0}; int data1[12]; int *data2 = new int[13]; char *data3 = new char[10]; cout<<length(data)<<" "<<sizeof(data[0])<<" "<<sizeof(data)<<endl; cout<<length(data1)<<" "<<sizeof(data1[0])<<" "<<sizeof(data1)<<endl; cout<<length(data2)<<" "<<sizeof(data2[0])<<" "<<sizeof(data2)<<endl; cout<<length(data3)<<" "<<sizeof(data3[0])<<" "<<sizeof(data3)<<endl; return 0;
運(yùn)行結(jié)果截圖可知:
sizeof()參數(shù)為數(shù)組名和指針變量的不同,sizeof(data)=44 此處為確為數(shù)組長(zhǎng)度。
sizeof(data2)=4此處與sizeof(data2[0])相同,但是意義卻不同。
sizeof(data2)=4得到的結(jié)果永遠(yuǎn)是指針變量本身的大小,此處是一個(gè)指針變量,指針變量永遠(yuǎn)為32位4字節(jié),只要是指針,大小就是4(64位機(jī)上要變成8也不一定);當(dāng)聲明動(dòng)態(tài)數(shù)組時(shí)一定要小心。
sizeof(data2[0])=4指針變量指向的空間的大小,此處為數(shù)組空間為int類型,類似于sizeof(int)=4,而sizeof(data3[0])=1,就類似于sizeof(char)=1。
提到了sizeof,那什么是sizeof?
首先看一下sizeof在msdn上的定義:
The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.
看到return這個(gè)字眼,是不是想到了函數(shù)?錯(cuò)了,sizeof不是一個(gè)函數(shù),你見過給一個(gè)函數(shù)傳參數(shù),而不加括號(hào)的嗎?sizeof可以,所以sizeof不是函數(shù)。網(wǎng)上有人說sizeof是一元操作符,但是我并不這么認(rèn)為,因?yàn)閟izeof更像一個(gè)特殊的宏,它是在編譯階段求值的。
結(jié)論:不要把sizeof當(dāng)成函數(shù),也不要看作一元操作符,把他當(dāng)成一個(gè)特殊的編譯預(yù)處理。
小尾巴~~~~~~~~~~~~? ? ?
?????? 為什么要寫sizeof()呢?起初是想寫寫排序算法,想把數(shù)組當(dāng)作參數(shù)傳入,然后用length算出數(shù)組長(zhǎng)度,但是失敗了,查閱資料后發(fā)現(xiàn),大部分的函數(shù)如果想要傳參數(shù)組,需要多傳一個(gè)參數(shù)即數(shù)組長(zhǎng)度。用上邊length的方法行不通,只是傳入了一個(gè)指針而已。
原文鏈接:https://www.cnblogs.com/anjingdian/p/15836604.html
相關(guān)推薦
- 2022-11-24 Linux實(shí)現(xiàn)文件定期本地備份/異地備份/刪除備份的腳本_linux shell
- 2022-03-04 element-ui修改tooltip的背景顏色和小箭頭的顏色
- 2022-01-08 解決npm install報(bào)錯(cuò)問題--npm install xxx npm ERR! code E
- 2022-03-29 Python函數(shù)裝飾器的使用詳解_python
- 2022-04-24 記錄一次nginx啟動(dòng)失敗的解決過程_nginx
- 2022-07-31 C語言編程基礎(chǔ)char類型轉(zhuǎn)換示例_C 語言
- 2022-12-27 教你使用Psycopg2連接openGauss的方法_python
- 2022-05-05 利用Python編寫一個(gè)記憶翻牌游戲_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- 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)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支