<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
一維陣列名稱的用途:
可以統計整個陣列在記憶體中的長度
可以獲取陣列在記憶體中的首地址
範例:
int main() { //陣列名用途 //1、可以獲取整個陣列佔用記憶體空間大小 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; cout << "整個陣列所佔記憶體空間為: " << sizeof(arr) << endl; cout << "每個元素所佔記憶體空間為: " << sizeof(arr[0]) << endl; cout << "陣列的元素個數為: " << sizeof(arr) / sizeof(arr[0]) << endl; //2、可以通過陣列名獲取到陣列首地址 cout << "陣列首地址為: " << (int)arr << endl; cout << "陣列中第一個元素地址為: " << (int)&arr[0] << endl; cout << "陣列中第二個元素地址為: " << (int)&arr[1] << endl; //arr = 100; 錯誤,陣列名是常數,因此不可以賦值 system("pause"); return 0; }
二維陣列陣列名
範例:
int main() { //二維陣列陣列名 int arr[2][3] = { {1,2,3}, {4,5,6} }; cout << "二維陣列大小: " << sizeof(arr) << endl; cout << "二維陣列一行大小: " << sizeof(arr[0]) << endl; cout << "二維陣列元素大小: " << sizeof(arr[0][0]) << endl; cout << "二維陣列行數: " << sizeof(arr) / sizeof(arr[0]) << endl; cout << "二維陣列列數: " << sizeof(arr[0]) / sizeof(arr[0][0]) << endl; //地址 cout << "二維陣列首地址:" << arr << endl; cout << "二維陣列第一行地址:" << arr[0] << endl; cout << "二維陣列第二行地址:" << arr[1] << endl; cout << "二維陣列第一個元素地址:" << &arr[0][0] << endl; cout << "二維陣列第二個元素地址:" << &arr[0][1] << endl; system("pause"); return 0; }
補充:C++/C中 sizeof(指標)和sizeof(陣列名)的區別
#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;
執行結果截圖可知:
sizeof()引數為陣列名和指標變數的不同,sizeof(data)=44 此處為確為陣列長度。
sizeof(data2)=4此處與sizeof(data2[0])相同,但是意義卻不同。
sizeof(data2)=4得到的結果永遠是指標變數本身的大小,此處是一個指標變數,指標變數永遠為32位元4位元組,只要是指標,大小就是4(64位元機上要變成8也不一定);當宣告動態陣列時一定要小心。
sizeof(data2[0])=4指標變數指向的空間的大小,此處為陣列空間為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這個字眼,是不是想到了函數?錯了,sizeof不是一個函數,你見過給一個函數傳引數,而不加括號的嗎?sizeof可以,所以sizeof不是函數。網上有人說sizeof是一元操作符,但是我並不這麼認為,因為sizeof更像一個特殊的宏,它是在編譯階段求值的。
結論:不要把sizeof當成函數,也不要看作一元操作符,把他當成一個特殊的編譯預處理。
小尾巴~~~~~~~~~~~~
為什麼要寫sizeof()呢?起初是想寫寫排序演演算法,想把陣列當作引數傳入,然後用length算出陣列長度,但是失敗了,查閱資料後發現,大部分的函數如果想要傳引陣列,需要多傳一個引數即陣列長度。用上邊length的方法行不通,只是傳入了一個指標而已。
到此這篇關於c++陣列名稱和sizeof的文章就介紹到這了,更多相關c++ sizeof 陣列名稱內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45