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

C語言例題講解指針與數(shù)組

 更新時(shí)間:2022年07月07日 09:00:38   作者:龍兆萬  
在C語言和C++等語言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲(chǔ)類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來指向若干個(gè)字符串,使字符串處理更加方便、靈活

1.概要復(fù)習(xí)

本篇的內(nèi)容主要圍繞指針與數(shù)組、指針與字符串等之間的關(guān)系,以及進(jìn)一步理解sizeof 、strlen 的使用與意義。

數(shù)組是指具有相同類型元素的集合,字符串常量是一個(gè)指向在連續(xù)空間里存放的字符的首字符的地址的指針。我們會(huì)在下面理解數(shù)組與字符串?dāng)?shù)組的不同。

sizeof 是一個(gè)操作符,是計(jì)算類型空間大小的。strlen 是針對(duì)字符串的庫函數(shù),用來求字符串的長度。

對(duì)于數(shù)組來說,數(shù)組名都是首元素地址,除了這兩種情況外:

  • sizeof(數(shù)組名)——sizeof內(nèi)部單獨(dú)放置數(shù)組名表整個(gè)數(shù)組
  • &數(shù)組名——對(duì)數(shù)組名進(jìn)行取地址操作表取出整個(gè)數(shù)組的地址

2.指針與數(shù)組筆試題

我們的目的是求下面各個(gè) printf 語句輸出什么。

2.1一維數(shù)組

#include <stdio.h>
int main()
{
	int a[] = { 1,2,3,4 };
	printf("%d\n", sizeof(a));
	printf("%d\n", sizeof(a + 0));
	printf("%d\n", sizeof(*a));
	printf("%d\n", sizeof(a + 1));
	printf("%d\n", sizeof(a[1]));
	printf("%d\n", sizeof(&a));
	printf("%d\n", sizeof(*&a));
	printf("%d\n", sizeof(&a + 1));
	printf("%d\n", sizeof(&a[0]));
	printf("%d\n", sizeof(&a[0] + 1));
	return 0;
}
#include <stdio.h>
int main()
{
	int a[] = { 1,2,3,4 };
	printf("%d\n", sizeof(a));
	//sizeof 內(nèi)部單獨(dú)放置數(shù)組名,計(jì)算整個(gè)數(shù)組的大小,結(jié)果為 4(int類型)*4(元素個(gè)數(shù))=16
	printf("%d\n", sizeof(a + 0));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,此時(shí)數(shù)組名表首元素地址,a+0 依然表示首元素地址
	//故 sizeof 計(jì)算一個(gè)地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(*a));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,此時(shí)數(shù)組名表首元素地址,*a 表對(duì)該地址解引用
	//即可得到 a 數(shù)組的第一個(gè)元素,大小為 4(int類型)
	printf("%d\n", sizeof(a + 1));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,此時(shí)數(shù)組名表首元素地址,a+1 表第二個(gè)元素地址
	//故 sizeof 計(jì)算一個(gè)地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(a[1]));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,a[1] 表數(shù)組的第二個(gè)元素,此寫法可轉(zhuǎn)置為 *(a+1)
	//即計(jì)算的結(jié)果是第二個(gè)元素的類型大小,即 4(int類型)
	printf("%d\n", sizeof(&a));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,而是放置了 &a ,表取出整個(gè)數(shù)組的地址
	//故 sizeof 計(jì)算一個(gè)地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(*&a));
	//sizeof 內(nèi)部雖然看似沒有單獨(dú)放置數(shù)組名,但是通過 &a 取出整個(gè)數(shù)組地址
	//然后通過 * 找到整個(gè)地址,與 sizeof(a) 沒有差別
	//故這里的 sizeof 計(jì)算的也是整個(gè)數(shù)組的大小,即 4(int類型)*4(元素個(gè)數(shù))=16
	printf("%d\n", sizeof(&a + 1));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,&a+1 表取出整個(gè)數(shù)組的地址,并向后跳躍一個(gè)數(shù)組類型的大小
	//即此時(shí)的地址是指向元素 4 的后面一塊 int 類型的內(nèi)存空間
	//故 sizeof 計(jì)算地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(&a[0]));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,&a[0] 表取出數(shù)組第一個(gè)元素的地址
	//故 sizeof 計(jì)算地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(&a[0] + 1));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,&a[0]+1 表取出數(shù)組第一個(gè)元素地址并向后跳躍一個(gè) int 類型的大小
	//故 sizeof 計(jì)算的是地址(指針)的大小為 4 or 8
	return 0;
}

2.2字符數(shù)組

#include <stdio.h>
int main()
{
	char arr[] = { 'a','b','c','d','e','f' };
	printf("%d\n", sizeof(arr));
	printf("%d\n", sizeof(arr + 0));
	printf("%d\n", sizeof(*arr));
	printf("%d\n", sizeof(arr[1]));
	printf("%d\n", sizeof(&arr));
	printf("%d\n", sizeof(&arr + 1));
	printf("%d\n", sizeof(&arr[0] + 1));
	printf("%d\n", strlen(arr));
	printf("%d\n", strlen(arr + 0));
	printf("%d\n", strlen(*arr));
	printf("%d\n", strlen(arr[1]));
	printf("%d\n", strlen(&arr));
	printf("%d\n", strlen(&arr + 1));
	printf("%d\n", strlen(&arr[0] + 1));
	return 0;
}
#include <stdio.h>
int main()
{
	char arr[] = { 'a','b','c','d','e','f' };//非字符串?。。。。?!
	printf("%d\n", sizeof(arr));
	//sizeof 內(nèi)部單獨(dú)放置數(shù)組名,故計(jì)算的是整個(gè)數(shù)組的大小
	//即大小為 1(char類型)*6(元素個(gè)數(shù))=6
	printf("%d\n", sizeof(arr + 0));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,arr 表數(shù)組首元素地址,arr+0 亦表示首元素地址
	//故 sizeof 計(jì)算地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(*arr));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,arr 表數(shù)組首元素地址,*arr 表對(duì)該地址解引用
	//便得到數(shù)組第一個(gè)元素 'a' ,故大小為 1(char類型)
	printf("%d\n", sizeof(arr[1]));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,arr[1] 表數(shù)組第二個(gè)元素,即 'b'
	//故大小為 1(char類型)
	printf("%d\n", sizeof(&arr));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,&arr 表取出整個(gè)數(shù)組的地址
	//故 sizeof 計(jì)算的地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(&arr + 1));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,&arr+1 表取出整個(gè)數(shù)組的地址并向后跳躍一個(gè)數(shù)組類型的大小
	//即指向元素 'f' 后一個(gè) char 類型的空間
	//故 sizeof 計(jì)算的是地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(&arr[0] + 1));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,&arr[0]+1 表取出數(shù)組一個(gè)元素的地址并向后跳躍一個(gè) char 類型的大小
	//故 sizeof 計(jì)算的地址(指針)的大小為 4 or 8
	printf("%d\n", strlen(arr));
	//strlen 不是 sizeof ,故 arr 表數(shù)組首元素地址,strlen 會(huì)以此地址開始向后尋找 '\0'
	//但此數(shù)組并不包含 '\0' ,故 strlen 的返回值為隨機(jī)值
	printf("%d\n", strlen(arr + 0));
	//strlen 不是 sizeof ,arr+0 表首元素地址,strlen 的返回值也是一個(gè)隨機(jī)值
	printf("%d\n", strlen(*arr));
	//strlen 不是 sizeof ,*arr 表對(duì)數(shù)組首元素地址解引用,得到字符 'a' ,其 ASCLL 碼值為 97
	//strlen 會(huì)以 97 為起始地址向后尋找 '\0' 
	//但個(gè)人理解認(rèn)為:97 是一個(gè)沒有初始化的指針(地址),即野指針
	//故這里會(huì)報(bào)錯(cuò)
	printf("%d\n", strlen(arr[1]));
	//arr[1] 表數(shù)組的第二個(gè)元素 'b' ,其 ASCLL 碼值為 98
	//strlen 會(huì)以 98 為起始地址向后尋找 '\0'
	//但個(gè)人理解認(rèn)位:98 是一個(gè)沒有初始化的指針(地址),即野指針
	//故這里依然會(huì)報(bào)錯(cuò)
	printf("%d\n", strlen(&arr));
	//&arr 表取出整個(gè)數(shù)組的地址,strlen 會(huì)以此作為起始地址向后尋找 '\0'
	//這里需要注意,在 strlen 的函數(shù)聲明當(dāng)中,參數(shù)是一個(gè) char* 類型的指針
	//也就是我們雖然傳參時(shí)傳了一個(gè)數(shù)組指針,但是 strlen 接收時(shí)會(huì)自動(dòng)強(qiáng)轉(zhuǎn)為 char* 類型指針
	//故數(shù)組并不包含 '\0' ,strlen 的返回值是一個(gè)隨機(jī)值
	printf("%d\n", strlen(&arr + 1));
	//&arr+1 表取出整個(gè)數(shù)組的地址并向后跳躍一個(gè)數(shù)組類型的大小
	//即指向了元素 'f' 的后一塊 char 類型的空間
	//strlen 會(huì)以此地址作為起始地址向后尋找 '\0'
	//但因我們無法確定 '\0' 的位置,所以 strlen 的返回值是一個(gè)隨機(jī)值
	printf("%d\n", strlen(&arr[0] + 1));
	//&arr[0]+1 表取出數(shù)組首元素地址并向后跳躍一個(gè) char 類型的大小
	//即指向了元素 'b' ,strlen 會(huì)以此地址作為起始地址向后尋找 '\0'
	//但數(shù)組中并不包含 '\0' ,故 strlen 的返回值是一個(gè)隨機(jī)值
	return 0;
}

我們把報(bào)錯(cuò)的兩條語句注釋掉:

2.3字符串?dāng)?shù)組

#include <stdio.h>
int main()
{
	char arr[] = "abcdef";
	printf("%d\n", sizeof(arr));
	printf("%d\n", sizeof(arr + 0));
	printf("%d\n", sizeof(*arr));
	printf("%d\n", sizeof(arr[1]));
	printf("%d\n", sizeof(&arr));
	printf("%d\n", sizeof(&arr + 1));
	printf("%d\n", sizeof(&arr[0] + 1));
	printf("%d\n", strlen(arr));
	printf("%d\n", strlen(arr + 0));
	printf("%d\n", strlen(*arr));
	printf("%d\n", strlen(arr[1]));
	printf("%d\n", strlen(&arr));
	printf("%d\n", strlen(&arr + 1));
	printf("%d\n", strlen(&arr[0] + 1));
	return 0;
}
#include <stdio.h>
int main()
{
	char arr[] = "abcdef";//注意數(shù)組里面放的是字符串!?。?
	printf("%d\n", sizeof(arr));
	//sizeof 內(nèi)部單獨(dú)放置數(shù)組名,即計(jì)算整個(gè)數(shù)組的大小
	//大小為 1(char類型)*7(元素個(gè)數(shù))=7
	printf("%d\n", sizeof(arr + 0));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,arr+0 表數(shù)組首元素地址
	//故 sizeof 計(jì)算地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(*arr));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,*arr 表對(duì)數(shù)組首元素地址解引用
	//即得到字符 'b' ,故大小為 1(char類型)
	printf("%d\n", sizeof(arr[1]));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,arr[1] 表數(shù)組第二個(gè)元素即字符 'b'
	//故大小為 1(char類型)
	printf("%d\n", sizeof(&arr));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,&arr 表對(duì)整個(gè)數(shù)組取地址
	//故 sizeof 計(jì)算的地址(指針)大小為 4 or 8
	printf("%d\n", sizeof(&arr + 1));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,&arr+1 表取出整個(gè)數(shù)組地址并向后跳躍一個(gè)數(shù)組類型大小
	//即指向元素 '\0' 后面一塊數(shù)組類型大小的空間
	//故 sizeof 計(jì)算的地址(指針)大小為 4 or 8
	printf("%d\n", sizeof(&arr[0] + 1));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,&arr[0]+1 表取出數(shù)組首元素地址并向后跳躍一個(gè) char 類型大小
	//即指向數(shù)組第二個(gè)元素
	//故 sizeof 計(jì)算的地址(指針)大小為 4 or 8
	printf("%d\n", strlen(arr));
	//strlen 不是 sizeof ,arr 表數(shù)組首元素地址,strlen 會(huì)以此為起始地址向后尋找 '\0'
	//因?yàn)榇藬?shù)組包含 '\0' ,故 strlen 的返回值為 6
	printf("%d\n", strlen(arr + 0));
	//arr+0 表數(shù)組首元素地址,strlen 會(huì)以此地址為起始地址向后尋找 '\0'
	//因?yàn)榇藬?shù)組包含 '\0' ,故 strlen 的返回值為 6
	printf("%d\n", strlen(*arr));
	//*arr 表對(duì)數(shù)組首元素地址解引用,得到字符 'a' ,其 ASCLL 碼值為 97
	//故 strlen 會(huì)以此地址為起始地址向后尋找 '\0'
	//但個(gè)人理解認(rèn)位: 97 是一個(gè)沒有初始化的指針(地址),即野指針
	//故這里會(huì)報(bào)錯(cuò)
	printf("%d\n", strlen(arr[1]));
	//arr[1] 表數(shù)組第二個(gè)元素,即字符 'b' ,其 ASCLL 碼值為 98
	//strlen 會(huì)以此地址會(huì)起始地址向后尋找 '\0'
	//但個(gè)人理解認(rèn)位:98 是一個(gè)沒有初始化的指針(地址),即野指針
	//故這里會(huì)報(bào)錯(cuò)
	printf("%d\n", strlen(&arr));
	//&arr 表取出整個(gè)數(shù)組的地址,但觀察 strlen 函數(shù)的聲明可以發(fā)現(xiàn)
	//strlen 的函數(shù)參數(shù)是一個(gè) char* 類型的指針
	//即我們傳參傳進(jìn)去的是一個(gè)數(shù)組指針,當(dāng) strlen 接收的時(shí)候,會(huì)將其強(qiáng)轉(zhuǎn)為字符指針
	//故 strlen 會(huì)以數(shù)組首元素地址為起始地址,向后尋找 '\0'
	//因?yàn)閿?shù)組包含 '\0' ,故 strlen 的返回值為 6
	printf("%d\n", strlen(&arr + 1));
	//&arr+1 表取出整個(gè)數(shù)組的地址并向后跳躍一個(gè)數(shù)組類型大小
	//即指向 '\0' 后一塊數(shù)組類型的空間
	//strlen 會(huì)以此地址為起始地址向后尋找 '\0'
	//但我們無法確定 '\0' 的具體位置,所以 strlen 會(huì)返回一個(gè)隨機(jī)值
	printf("%d\n", strlen(&arr[0] + 1));
	//&arr[0]+1 表取出數(shù)組首元素地址并向后跳躍一個(gè) char 類型的大小
	//即指向了數(shù)組第二個(gè)元素的地址
	//strlen 會(huì)以此地址作為起始地址向后尋找 '\0'
	//故 strlen 的返回值為 5
	return 0;
}

我們把報(bào)錯(cuò)的語句注釋掉:

2.4字符串指針

#include <stdio.h>
int main()
{
	char* p = "abcdef";//p 變量存放的是字符串常量的首元素地址
	printf("%d\n", sizeof(p));
	//sizeof 計(jì)算地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(p + 1));
	//p+1 表字符串常量的第二個(gè)元素的地址
	//故 sizeof 計(jì)算的地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(*p));
	//*p 表對(duì)字符串常量首元素地址解引用。得到字符 'a'
	//故計(jì)算的大小為 1(char類型)
	printf("%d\n", sizeof(p[0]));
	//p[0] 可改寫成 *(p+0) ,表對(duì)字符串常量首元素地址解引用,得到字符 'a'
	//即計(jì)算的大小為 1(char類型)
	printf("%d\n", sizeof(&p));
	//&p 表對(duì) char* 類型指針取地址
	//故 sizeof 計(jì)算的地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(&p + 1));
	//&p+1 表對(duì) char* 類型指針變量 p 取地址并向后跳躍一個(gè) char 類型的大小
	//指向的空間是未知的
	//但 sizeof 計(jì)算的地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(&p[0] + 1));
	//&p[0]+1 可改寫成 &(*(p+0))+1 ,表取出字符串常量的首元素地址并向后跳躍一個(gè) char 類型的大小
	//即指向了字符 'b'
	//故 sizeof 計(jì)算的地址(指針)的大小為 4 or 8
	printf("%d\n", strlen(p));
	//strlen 不是 sizeof ,p表字符串首元素地址
	//strlen 以此地址為起始地址,向后尋找 '\0'
	//故 strlen 的返回值為 6
	printf("%d\n", strlen(p + 1));
	//p+1 表字符串常量的第二個(gè)元素的地址,strlen 會(huì)以此為地址向后尋找 '\0'
	//故 strlen 的返回值為 5
	printf("%d\n", strlen(*p));
	//*p 表字符串常量首元素,即字符 'a',strlen 會(huì)以此為地址向后尋找 '\0'
	//但個(gè)人理解人為:'a' 的 ASCLL 碼值為 97 ,但 97 是一個(gè)沒有被初始化的指針(地址),即野指針
	//故這里會(huì)報(bào)錯(cuò)
	printf("%d\n", strlen(p[0]));
	//p[0] 可改寫成 *(p+0) ,表字符串常量首元素,即字符 'a',其 ASCLL 碼值為 97
	//strlen 會(huì)以此地址為起始地址向后尋找 '\0'
	//但個(gè)人理解認(rèn)位:97 是一個(gè)沒有被初始化的指針(地址),即野指針
	//故這里會(huì)報(bào)錯(cuò)
	printf("%d\n", strlen(&p));
	//&p 表取出 char* 類型指針變量的地址,strlen 以此地址為起始地址向后尋找 '\0'
	//但我們無法確定 '\0' 的位置
	//故 strlen 會(huì)返回一個(gè)隨機(jī)值
	printf("%d\n", strlen(&p + 1));
	//&p+1 表取出 char* 類型指針變量的地址并向后跳躍一個(gè) char 類型的大小,strlen 以此地址為起始地址向后尋找 '\0'
	//但我們無法確定 '\0'的位置,故 strlen 的返回值會(huì)返回一個(gè)隨機(jī)值
	printf("%d\n", strlen(&p[0] + 1));
	//*p{0}+1 可改寫為 &(*(p+0))+1 ,表取出字符串常量首元素地址并向后跳躍一個(gè) char 類型的大小
	//即指向了字符串常量的第二個(gè)元素的地址,strlen 會(huì)以此地址為起始地址向后尋找 '\0'
	//故 strlen 的返回值為 5
	return 0;
}

我們對(duì)報(bào)錯(cuò)的兩條語句注釋:

2.5二維數(shù)組

#include <stdio.h>
int main()
{
	int a[3][4] = { 0 };
	printf("%d\n", sizeof(a));
	//sizeof 內(nèi)部放置的是數(shù)組名,故計(jì)算整個(gè)數(shù)組的大小
	//即大小為 4(int類型)*12(元素個(gè)數(shù))=48
	printf("%d\n", sizeof(a[0][0]));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,a[0][p] 表數(shù)組首元素
	//故 sizeof 的計(jì)算值為 4(int類型)
	printf("%d\n", sizeof(a[0]));
	//sizeof 內(nèi)部放置的看似不是單獨(dú)的數(shù)組名,但 a[0] 表數(shù)組的第一個(gè)元素
	//此元素也是一個(gè)數(shù)組
	//故 sizeof 計(jì)算的大小為 4(int類型)*4(元素個(gè)數(shù))=16
	printf("%d\n", sizeof(a[0] + 1));
	//sizeof 內(nèi)部放置的不是單獨(dú)的數(shù)組名,a[0] 表二維數(shù)組的第一個(gè)元素,即拿到了一個(gè)數(shù)組
	//a[0]+1 表二維數(shù)組的第一個(gè)數(shù)組元素的地址并向后跳躍一個(gè) int 類型的大小
	//故 sizeof 計(jì)算的地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(*(a[0] + 1)));
	//*(a[0]+1) 表對(duì)二維數(shù)組的第一個(gè)數(shù)組元素的地址并向后跳躍一個(gè) int 類型的大小的解引用
	//即找到了二維數(shù)組中的某一個(gè)元素
	//故 sizeof 計(jì)算的大小為 4(int類型)
	printf("%d\n", sizeof(a + 1));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,a+1 表二維數(shù)組的首元素地址并向后跳躍一個(gè)一維數(shù)組類型的大小
	//即指向了二維數(shù)組的第二個(gè)數(shù)組元素的地址
	//故 sizeof 計(jì)算的地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(*(a + 1)));
	//*(a+1) 表對(duì)二維數(shù)組的首元素地址并向后跳躍一個(gè)一維數(shù)組類型的大小的解引用
	//即得到了二維數(shù)組的第二個(gè)元素
	//此元素為一個(gè)一維數(shù)組,故 sizeof 計(jì)算的大小為 4(int類型)*4(元素個(gè)數(shù))=16
	printf("%d\n", sizeof(&a[0] + 1));
	//&a[0]+1 表二維數(shù)組的首元素取地址并向后跳躍一個(gè)一維數(shù)組的類型大小
	//指向了二維數(shù)組的第二個(gè)元素
	//故 sizeof 計(jì)算的地址(指針)的大小為 4 or 8
	printf("%d\n", sizeof(*(&a[0] + 1)));
	//*(&a[0]+1) 表對(duì)二維數(shù)組的首元素取地址并向后跳躍一個(gè)一維數(shù)組的類型大小的解引用
	//即得到了二維數(shù)組的第二個(gè)元素
	//此元素是一個(gè)一維數(shù)組,故 sizeof 計(jì)算的大小的 4(int類型)*4(元素個(gè)數(shù))=16
	printf("%d\n", sizeof(*a));
	//sizeof 內(nèi)部沒有單獨(dú)放置數(shù)組名,*a 表對(duì)二維數(shù)組首元素地址解引用
	//得到一個(gè)一維數(shù)組
	//故 sizeof 計(jì)算的大小為 4(int類型)*4(元素個(gè)數(shù))=16
	printf("%d\n", sizeof(a[3]));
	//a[3] 表二維數(shù)組的第三個(gè)元素
	//需要說明的是,sizeof 只對(duì)類型感興趣
	//也就是說,二維數(shù)組雖然不存在第三個(gè)元素,但它的類型依舊是二維數(shù)組
	//故 sizeof 計(jì)算的是 4(int類型)*4(元素個(gè)數(shù))=16
	return 0;
}

到此這篇關(guān)于C語言例題講解指針與數(shù)組的文章就介紹到這了,更多相關(guān)C語言指針與數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VC++實(shí)現(xiàn)程序開機(jī)啟動(dòng)運(yùn)行的方法

    VC++實(shí)現(xiàn)程序開機(jī)啟動(dòng)運(yùn)行的方法

    這篇文章主要介紹了VC++實(shí)現(xiàn)程序開機(jī)啟動(dòng)運(yùn)行的方法,很實(shí)用的功能,需要的朋友可以參考下
    2014-08-08
  • C++中對(duì)C語言結(jié)構(gòu)體用法的擴(kuò)充

    C++中對(duì)C語言結(jié)構(gòu)體用法的擴(kuò)充

    今天小編就為大家分享一篇關(guān)于C++中對(duì)C語言結(jié)構(gòu)體用法的擴(kuò)充,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • c++類構(gòu)造函數(shù)詳解

    c++類構(gòu)造函數(shù)詳解

    這篇文章主要介紹了c++類構(gòu)造函數(shù)示例,需要的朋友可以參考下
    2014-05-05
  • 詳解C++17中類模板參數(shù)推導(dǎo)的使用

    詳解C++17中類模板參數(shù)推導(dǎo)的使用

    自C++17起就通過使用類模板參數(shù)推導(dǎo),只要編譯器能根據(jù)初始值推導(dǎo)出所有模板參數(shù),那么就可以不指明參數(shù),下面我們就來看看C++17中類模板參數(shù)推導(dǎo)的具體使用吧
    2024-03-03
  • Qt編程實(shí)現(xiàn)小時(shí)鐘

    Qt編程實(shí)現(xiàn)小時(shí)鐘

    這篇文章主要為大家詳細(xì)介紹了Qt編程實(shí)現(xiàn)小時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C語言?如何用堆解決Topk問題

    C語言?如何用堆解決Topk問題

    TopK問題即在N個(gè)數(shù)中找出最大的前K個(gè),這篇文章將詳細(xì)講解如何利用小根堆的方法解決TopK問題,文中代碼具有一定參考價(jià)值,快跟隨小編一起學(xué)習(xí)一下吧
    2021-12-12
  • c語言單詞本的新增、刪除、查詢按順序顯示功能

    c語言單詞本的新增、刪除、查詢按順序顯示功能

    這篇文章主要介紹了c語言單詞本的新增、刪除、查詢按順序顯示功能,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • C語言示例講解while循環(huán)語句的用法

    C語言示例講解while循環(huán)語句的用法

    在不少實(shí)際問題中有許多具有規(guī)律性的重復(fù)操作,因此在程序中就需要重復(fù)執(zhí)行某些語句。一組被重復(fù)執(zhí)行的語句稱之為循環(huán)體,C語言while語句可以是單個(gè)語句,也可以是一個(gè)語句塊,其條件可以是任意表達(dá)式,true是任意非零值,當(dāng)條件為真時(shí),循環(huán)進(jìn)行迭代
    2022-06-06
  • C++中的while循環(huán)和for循環(huán)語句學(xué)習(xí)教程

    C++中的while循環(huán)和for循環(huán)語句學(xué)習(xí)教程

    這篇文章主要介紹了C++中的while循環(huán)和for循環(huán)語句學(xué)習(xí)教程,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • Clion-MinGW編譯后的exe文件添加ico圖標(biāo)的操作方法

    Clion-MinGW編譯后的exe文件添加ico圖標(biāo)的操作方法

    這篇文章主要介紹了Clion-MinGW編譯后的exe文件添加ico圖標(biāo)的操作方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07

最新評(píng)論

长寿区| 琼结县| 连平县| 巴彦县| 淅川县| 七台河市| 邯郸市| 凤翔县| 浦东新区| 阜康市| 常宁市| 麻江县| 荣昌县| 凌云县| 宜兴市| 通许县| 永胜县| 海林市| 湖口县| 岳池县| 安平县| 关岭| 东台市| 青冈县| 海城市| 徐汇区| 奈曼旗| 商南县| 黄石市| 鲁山县| 中西区| 田东县| 安国市| 宜州市| 东海县| 阿坝县| 石台县| 绥江县| 安达市| 玉山县| 丘北县|