亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

從例題中深入理解數(shù)組名的含義

FingerLiu / 1679人閱讀

摘要:首先,我們先要了解數(shù)組名的意義數(shù)組名的意義數(shù)組名,這里的數(shù)組名表示整個數(shù)組,計算的是整個數(shù)組的大小。數(shù)組名,這里的數(shù)組名表示整個數(shù)組,取出的是整個數(shù)組的地址。這里對于二維數(shù)組同樣適用。

首先,我們先要了解數(shù)組名的意義:
數(shù)組名的意義:

  1. sizeof(數(shù)組名),這里的數(shù)組名表示整個數(shù)組,計算的是整個數(shù)組的大小。
  2. &數(shù)組名,這里的數(shù)組名表示整個數(shù)組,取出的是整個數(shù)組的地址。
  3. 除此之外所有的數(shù)組名都表示首元素的地址
    在此再說明一點:strlen-是庫函數(shù),求的是字符串長度
    sizeof-是操作符,單位是字節(jié),是求變量所占空間的大小,或者是求類型創(chuàng)建的變量所占空間的大小。
    首先來看一維數(shù)組:
#include 	int main(){	int a[] = { 1,2,3,4 };	printf("%d/n", sizeof(a)); //16	//數(shù)組名a多帶帶放在sizeof內部,數(shù)組名表示整個數(shù)組,計算的是整個數(shù)組的大小	printf("%d/n", sizeof(a + 0));//4/8	//a表示首元素的地址,a+0還是首元素的地址,地址的大小是4/8字節(jié)	printf("%d/n", sizeof(*a));  //4	 //a表示首元素的地址,*a 就是首元素 ==> a[0] ,大小就是4	 //*a <==> *(a+0) <==> a[0]	printf("%d/n", sizeof(a + 1));//4/8	//a表示首元素的地址,a+1是第二個元素的地址,大小就是4/8	printf("%d/n", sizeof(a[1]));//4	 //a[1] 就是第二個元素 - 4	printf("%d/n", sizeof(&a));  //4/8	 //&a - 數(shù)組的地址 - 4/8 - int(*)[4]	printf("%d/n", sizeof(*&a)); 	 //*&a - &a是數(shù)組的地址,對數(shù)組的地址解引用拿到的是數(shù)組,所以大小是16	 //printf("%d/n", sizeof(a));//16	printf("%d/n", sizeof(&a + 1));//4/8	// &a是數(shù)組的地址,&a+1 是數(shù)組的地址+1,跳過整個數(shù)組,雖然跳過了數(shù)組,	//還是地址  4/8	printf("%d/n", sizeof(&a[0]));//4/8	printf("%d/n", sizeof(&a[0] + 1));//第二個元素的地址 4/8	return 0;}

再來看一組字符數(shù)組:

int main(){	char arr[] = { "a", "b", "c", "d", "e", "f" };	printf("%d/n", sizeof(arr));//6	//數(shù)組名表示整個數(shù)組,計算的是整個數(shù)組的大小	printf("%d/n", sizeof(arr + 0));//4/8  	//數(shù)組名是首元素的地址,arr+0還是首元素的地址	printf("%d/n", sizeof(*arr));//1   首元素的大小。	printf("%d/n", sizeof(arr[1]));//1  數(shù)組第2個元素的大小	printf("%d/n", sizeof(&arr));//4/8  	//數(shù)組名表示整個數(shù)組,取出的是整個數(shù)組的地址	printf("%d/n", sizeof(&arr + 1));//4/8 &arr + 1跳過整個數(shù)組的地址	printf("%d/n", sizeof(&arr[0] + 1));//4/8  數(shù)組第二個元素的地址    printf("%d/n", strlen(arr));//隨機值      //strlen-是庫函數(shù),求的是字符串長度	printf("%d/n", strlen(arr + 0));//隨機值	//printf("%d/n", strlen(*arr));//*arr - "a" - 97 - err	//strlen就以為傳進來的"a"的ascii碼值97就是地址	//printf("%d/n", strlen(arr[1]));//"b" - 98 - err	printf("%d/n", strlen(&arr));//隨機值	//char(*)[6]	printf("%d/n", strlen(&arr + 1));//隨機值	printf("%d/n", strlen(&arr[0] + 1));//隨機值	return 0;}
int main(){    char arr[] = "abcdef";	printf("%d/n", sizeof(arr));//7 字節(jié)	printf("%d/n", sizeof(arr + 0));//arr是首元素的地址。arr+0還是首元素的地址 4/8	printf("%d/n", sizeof(*arr));//arr是首元素的地址,*arr就是首元素 1	printf("%d/n", sizeof(arr[1]));//arr[1]就是第二個元素  1	printf("%d/n", sizeof(&arr));//&arr 是數(shù)組的地址,數(shù)組的地址也是地址,就是4/8字節(jié)	printf("%d/n", sizeof(&arr + 1));//&arr 是數(shù)組的地址,&arr+1 是跳過整個數(shù)組后的地址 4/8	printf("%d/n", sizeof(&arr[0] + 1));//&arr[0] + 1 是第二個元素的地址,4/8    printf("%d/n", strlen(arr));//6 整個數(shù)組的長度	printf("%d/n", strlen(arr + 0));//6  arr+0是首元素的地址	//printf("%d/n", strlen(*arr));//err	//printf("%d/n", strlen(arr[1]));//err	printf("%d/n", strlen(&arr));//6 &arr-整個數(shù)組的地址	printf("%d/n", strlen(&arr + 1));//隨機值	printf("%d/n", strlen(&arr[0] + 1));//5  &arr[0] + 1-第2個元素的地址    return 0; }
int main()	{		const char* p = "abcdef";		printf("%d/n", strlen(p));//6		printf("%d/n", strlen(p + 1));//5		//printf("%d/n", strlen(*p));//err		//printf("%d/n", strlen(p[0]));//err		printf("%d/n", strlen(&p));//隨機值		printf("%d/n", strlen(&p + 1));//隨機值		printf("%d/n", strlen(&p[0] + 1));//5        printf("%d/n", sizeof(p));//p是一個指針變量 4/8		printf("%d/n", sizeof(p + 1));//p+1 是字符b的地址 4/8		printf("%d/n", sizeof(*p));//1		printf("%d/n", sizeof(p[0]));// 1 p[0]-->*(p+0) --> *p 1		printf("%d/n", sizeof(&p));//4/8		printf("%d/n", sizeof(&p + 1));//4/8		printf("%d/n", sizeof(&p[0] + 1));//4/8		    return 0;	}

最后,再來看一組二維數(shù)組:

int main(){	int a[3][4] = { 0 };	printf("%d/n", sizeof(a));  //48   12x4	printf("%d/n", sizeof(a[0][0]));//4  數(shù)組第一個元素的大小	printf("%d/n", sizeof(a[0]));// 16 	//a[0]表示第一行的數(shù)組名,數(shù)組名多帶帶放在sizeof內部,計算的是第一行整個數(shù)組的大小	printf("%d/n", sizeof(a[0] + 1));//4/8	//a[0]表示第一行的數(shù)組名,沒有多帶帶放在sizeof內部,也沒有&,所以arr[0]表示首元素地址	//所以 就是第一行這個數(shù)組第一個元素的地址	//a[0] + 1,就是第一行第2個元素的地址	printf("%d/n", sizeof(*(a[0] + 1)));//4 就是第一行第二個元素	printf("%d/n", sizeof(a + 1));//4/8	//數(shù)組名a并沒有多帶帶放在數(shù)組內部,也沒有&。所以a表示首元素(第一行)地址	//所以a+1,就是第二行地址	//int(*)[4]	printf("%d/n", sizeof(*(a + 1)));//16 *(a+1)就是整個第二行	//*(a + 1)-->a[1]	printf("%d/n", sizeof(&a[0] + 1));//4/8    	//&a[0]拿到的是第一行的地址,&a[0] + 1就是第二行的地址	printf("%d/n", sizeof(*(&a[0] + 1)));//16  整個第二行	printf("%d/n", sizeof(*a));//16  	//a表示首元素的地址,就是第一行的地址,*a就是第一行-第一行的數(shù)組名	printf("%d/n", sizeof(a[3]));//16 	//a[3]假設存在,就是第四行的數(shù)組名,sizeof(a[3])就相當于把第四行的數(shù)組名多帶帶放在sizeof內部	return 0;}

對于上面這個二維數(shù)組:a就是二維數(shù)組的數(shù)組名,第一行的數(shù)組名是a[0],第二行的數(shù)組名是a[1],第三行的數(shù)組名是a[2]。
1.sizeof(數(shù)組名),這里的數(shù)組名表示整個數(shù)組,計算的是整個數(shù)組的大小。
2. &數(shù)組名,這里的數(shù)組名表示整個數(shù)組,取出的是整個數(shù)組的地址。
這里對于二維數(shù)組同樣適用。
&a:二維數(shù)組首元素(第一行)的地址
&a[0]:第一行第一個元素的地址
&a[1]:第二行第一個元素的地址
&a[2]:第三行第一個元素的地址

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/119111.html

相關文章

  • 深入理解計算機系統(tǒng)》·深入淺出·快速理解第2章(3日完稿)

    摘要:寫在前面博客主頁的江湖背景的江湖背景歡迎關注點贊收藏留言本文由原創(chuàng),首發(fā)首發(fā)時間年月日最新更新時間年月日堅持和努力一定能換來詩與遠方向未見花聞學習參考書籍深入理解計算機系統(tǒng)作者水平很有限,如果發(fā)現(xiàn)錯誤,請留言轟炸哦萬分感謝感謝感謝 ?寫在前面 ?博客主頁:kikoking的江湖背景?...

    YJNldm 評論0 收藏0
  • JavaScript之例題徹底理解this

    摘要:最后重點理解結論箭頭函數(shù)的,總是指向定義時所在的對象,而不是運行時所在的對象。輸出,箭頭函數(shù)不會綁定所以傳入指向無效。原因是,要徹底理解應該是建立在已經大致理解了中的執(zhí)行上下文,作用域作用域鏈,閉包,變量對象,函數(shù)執(zhí)行過程的基礎上。 本文共 2025 字,看完只需 8 分鐘 概述 前面的文章講解了 JavaScript 中的執(zhí)行上下文,作用域,變量對象,this 的相關原理,但是我...

    Hwg 評論0 收藏0
  • 【零基礎趣學C語言】- 史上最全C語言函數(shù)詳解(萬字圖文+代碼演示+圖解)

    摘要:語言在設計中考慮了函數(shù)的高效性和易用性兩個原則。在語言中,最常見的當屬函數(shù)了。以上就是一個函數(shù),它被稱為語言的入口函數(shù),或者主函數(shù)。例如和都是函數(shù)名。形式參數(shù)當函數(shù)調用完成之后就自動銷毀了。 ...

    468122151 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<