最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

聊聊c++數(shù)組名稱和sizeof的問題

 更新時間:2022年01月23日 16:24:50   作者:安靜點--  
這篇文章主要介紹了c++數(shù)組名稱和sizeof,介紹了一維數(shù)組名稱的用途及二維數(shù)組數(shù)組名,通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下

一維數(shù)組名稱的用途:

可以統(tǒng)計整個數(shù)組在內(nèi)存中的長度

可以獲取數(shù)組在內(nèi)存中的首地址

示例:

int main() {

    //數(shù)組名用途
    //1、可以獲取整個數(shù)組占用內(nèi)存空間大小
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    cout << "整個數(shù)組所占內(nèi)存空間為: " << sizeof(arr) << endl;
    cout << "每個元素所占內(nèi)存空間為: " << sizeof(arr[0]) << endl;
    cout << "數(shù)組的元素個數(shù)為: " << sizeof(arr) / sizeof(arr[0]) << endl;
    //2、可以通過數(shù)組名獲取到數(shù)組首地址
    cout << "數(shù)組首地址為: " << (int)arr << endl;
    cout << "數(shù)組中第一個元素地址為: " << (int)&arr[0] << endl;
    cout << "數(shù)組中第二個元素地址為: " << (int)&arr[1] << endl;
    //arr = 100; 錯誤,數(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ù)組第一個元素地址:" << &arr[0][0] << endl;
    cout << "二維數(shù)組第二個元素地址:" << &arr[0][1] << endl;
    system("pause");
    return 0;
}

 補充: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;

運行結(jié)果截圖可知:

sizeof()參數(shù)為數(shù)組名和指針變量的不同,sizeof(data)=44 此處為確為數(shù)組長度。
sizeof(data2)=4此處與sizeof(data2[0])相同,但是意義卻不同。
sizeof(data2)=4得到的結(jié)果永遠是指針變量本身的大小,此處是一個指針變量,指針變量永遠為32位4字節(jié),只要是指針,大小就是4(64位機上要變成8也不一定);當聲明動態(tài)數(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這個字眼,是不是想到了函數(shù)?錯了,sizeof不是一個函數(shù),你見過給一個函數(shù)傳參數(shù),而不加括號的嗎?sizeof可以,所以sizeof不是函數(shù)。網(wǎng)上有人說sizeof是一元操作符,但是我并不這么認為,因為sizeof更像一個特殊的宏,它是在編譯階段求值的。
  結(jié)論:不要把sizeof當成函數(shù),也不要看作一元操作符,把他當成一個特殊的編譯預(yù)處理。

小尾巴~~~~~~~~~~~~     

       為什么要寫sizeof()呢?起初是想寫寫排序算法,想把數(shù)組當作參數(shù)傳入,然后用length算出數(shù)組長度,但是失敗了,查閱資料后發(fā)現(xiàn),大部分的函數(shù)如果想要傳參數(shù)組,需要多傳一個參數(shù)即數(shù)組長度。用上邊length的方法行不通,只是傳入了一個指針而已。

到此這篇關(guān)于c++數(shù)組名稱和sizeof的文章就介紹到這了,更多相關(guān)c++ sizeof 數(shù)組名稱內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++核心編程之內(nèi)存分區(qū)模型詳解

    C++核心編程之內(nèi)存分區(qū)模型詳解

    這篇文章主要為大家介紹了C++核心編程中內(nèi)存分區(qū)模型,C++程序在執(zhí)行時,將內(nèi)存大方向分為四個區(qū)域,代碼區(qū),全局區(qū),棧區(qū),堆區(qū),文章通過代碼示例介紹的非常詳細,感興趣的同學(xué)可以參考閱讀下
    2023-07-07
  • C++?OpenCV紅綠燈檢測Demo實現(xiàn)詳解

    C++?OpenCV紅綠燈檢測Demo實現(xiàn)詳解

    OpenCV(Open Source Computer Vision Library)是開源的計算機視覺和機器學(xué)習(xí)庫,提供了C++、 C、 Python、 Java接口,并支持Windows、 Linux、 Android、 Mac OS平臺,下面這篇文章主要給大家介紹了關(guān)于C++?OpenCV紅綠燈檢測Demo實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • C語言簡易掃雷游戲

    C語言簡易掃雷游戲

    這篇文章主要為大家詳細介紹了C語言簡易掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C++全密碼生成的實現(xiàn)代碼

    C++全密碼生成的實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了C++全密碼生成的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • C語言實現(xiàn)銷售管理系統(tǒng)

    C語言實現(xiàn)銷售管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)銷售管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C++中關(guān)鍵字Struct和Class的區(qū)別

    C++中關(guān)鍵字Struct和Class的區(qū)別

    這篇文章主要介紹了C++中關(guān)鍵字Struct和Class的區(qū)別,本文用大量實例講解了Struct和Class的區(qū)別,需要的朋友可以參考下
    2014-09-09
  • 關(guān)于c++編譯protobuf時提示LNK2001 無法解析的外部符號的問題

    關(guān)于c++編譯protobuf時提示LNK2001 無法解析的外部符號的問題

    這篇文章主要介紹了關(guān)于c++編譯protobuf時提示LNK2001 無法解析的外部符號的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • C語言標準庫<math.h>和<setjmp.h>的實現(xiàn)

    C語言標準庫<math.h>和<setjmp.h>的實現(xiàn)

    本文主要介紹了C語言標準庫<math.h>和<setjmp.h>的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • C語言遞歸操作用法總結(jié)

    C語言遞歸操作用法總結(jié)

    這篇文章主要介紹了C語言遞歸操作用法,結(jié)合實例形式總結(jié)分析了C語言遞歸操作的原理、實現(xiàn)技巧與相關(guān)應(yīng)用,需要的朋友可以參考下
    2016-02-02
  • 使用用C++做一顆會跳動的愛心實例代碼

    使用用C++做一顆會跳動的愛心實例代碼

    大家好,本篇文章主要講的是使用用C++做一顆會跳動的愛心實例代碼,感興趣的同學(xué)趕快來看一看吧,歡迎借鑒學(xué)習(xí)C++做一顆會跳動的愛心實例代碼
    2021-12-12

最新評論

中卫市| 萨迦县| 酉阳| 揭西县| 武威市| 盈江县| 舒兰市| 海兴县| 临江市| 安庆市| 盐津县| 凤山市| 松桃| 波密县| 三江| 勃利县| 太湖县| 和林格尔县| 抚松县| 宿松县| 保山市| 五指山市| 翁牛特旗| 班玛县| 松潘县| 怀化市| 城口县| 宁远县| 天长市| 交城县| 安塞县| 青岛市| 三原县| 开封县| 深州市| 祥云县| 正宁县| 新化县| 临桂县| 永年县| 五峰|