91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何分析c++數組名稱和sizeof的問題

發布時間:2022-01-24 09:09:47 來源:億速云 閱讀:131 作者:柒染 欄目:開發技術

這篇文章將為大家詳細講解有關如何分析c++數組名稱和sizeof的問題,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

一維數組名稱的用途:

可以統計整個數組在內存中的長度

可以獲取數組在內存中的首地址

示例:

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;

如何分析c++數組名稱和sizeof的問題

運行結果截圖可知:

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的問題就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永昌县| 疏附县| 宜宾市| 游戏| 宝鸡市| 孟津县| 沾化县| 阳曲县| 同德县| 平潭县| 昌邑市| 中超| 大安市| 图片| 合肥市| 内江市| 江达县| 东光县| 上饶县| 新津县| 贺兰县| 家居| 丁青县| 天峨县| 泾源县| 蓝田县| 尼玛县| 忻城县| 梅河口市| 安国市| 玉门市| 万盛区| 辽宁省| 临洮县| 沙坪坝区| 公主岭市| 读书| 平阳县| 萨迦县| 洪泽县| 南充市|