欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言strlen和sizeof在數(shù)組中的使用詳解

 更新時(shí)間:2021年10月12日 10:08:48   作者:執(zhí)久呀  
對(duì)于 strlen 和 sizeof,相信不少程序員會(huì)混淆其功能。雖然從表面上看它們都可以求字符串的長(zhǎng)度,但二者卻存在著許多不同之處及本質(zhì)區(qū)別

一、前言

前面我們?cè)敿?xì)講了sizeof和strlen中的使用,基本涉及了所有一維數(shù)組可以和常見的題目類型

那么現(xiàn)在我們就將一維數(shù)組告一段落了,現(xiàn)在我們來開始講解在二維數(shù)組的使用了,本篇是

sizeof和strlen的最后一篇了。

二、sizeof在二維數(shù)組的試題

#include<stdio.h>
 
int main()
{
	int a[3][4] = { 0 };
 
	printf("%d\n", sizeof(a));
 
	printf("%d\n", sizeof(a[0]));
 
	printf("%d\n", sizeof(a[0][0]));
 
	printf("%d\n", sizeof(a[0]+1));
 
	printf("%d\n", sizeof(*(a[0]+1)));
 
	printf("%d\n", sizeof(a+1));
 
	printf("%d\n", sizeof(*(a+1)));
 
	printf("%d\n", sizeof(&a[0]+1));
 
	printf("%d\n", sizeof(*(&a[0] + 1)));
 
	printf("%d\n", sizeof(*a));
 
	printf("%d\n", sizeof(a[3]));
 
	return 0;
}

解讀:

對(duì)于二維數(shù)組來說,其實(shí)可以看成個(gè)一維數(shù)組,以行為單位,第一行可以看成以為首元素,

以此類推,這樣我們就得到了一個(gè)一維數(shù)組,但是要記得這里的每個(gè)元素都是一個(gè)數(shù)組名。

比如對(duì)于上面的二維數(shù)組來說a[3][4]完全等價(jià)于a{a[0],a[1],a[2]},其中每個(gè)元素都是一個(gè)一

維數(shù)組,單獨(dú)的每個(gè)元素如a[0]是數(shù)組名,表示的是a[0]這個(gè)一維數(shù)組的首元素地址。

題解:

第一題:sizeof(a),a是數(shù)組名,單獨(dú)放在sizeof里表示的是整個(gè)數(shù)組,所以大小是12*4=48

字節(jié)。

第二題:sizeof(a[0]),前面我們說道,這個(gè)就相當(dāng)于一個(gè)一維數(shù)組,a[0]表示的是數(shù)組名,數(shù)

組名單獨(dú)放在sizeof中計(jì)算的整個(gè)數(shù)組的大小,也就是a[0]那行的大小,因?yàn)榍懊嬲f過了把二

數(shù)組看成一維數(shù)組,每一行看成其中的每一個(gè)元素,然后每個(gè)元素就是一個(gè)一維數(shù)組

sizeof(a[0])就是求出第一行的大小,故大小是4*4=16字節(jié)。

第三題:sizeof(a[0][0]),a[0][0]表示的是第一行第一個(gè)元素,所以大小是4字節(jié)。

第四題:sizeof(a[0]+1),a[0]不是單獨(dú)放在sizeof中的,所以他表示的是首元素地址,因?yàn)?/p>

我們說過對(duì)于二維數(shù)組來說,每一個(gè)行都可以表示一個(gè)一維數(shù),所以a[0]+1,表示的是第二個(gè)

元素的地址,既然是地址那就是4或8字節(jié)

第五題:sizeof(*(a[0]+1)),上一題我們說到,a[0]+1表示的是第一行第二個(gè)元素的地址

*(a[0]+1)表示的是拿到第一行第二個(gè)元素的值,所以大小是4字節(jié)。

第六題:sizeof(a+1),其中a沒有單獨(dú)放在sizeof里,因?yàn)槭嵌S數(shù)組,所以表示的是第一行

的地址,a+1,第一行的地址加1表示的是第二行的地址,既然是地址那大小就是4或8字節(jié)。

第七題:sizeof(*(a+1)),上面那題已經(jīng)解釋過了a+1表示的是第二行的地址,那么*(a+1)

表示的是拿到第二行的所有元素,所以大小是4*4=16字節(jié)。

第八題:sizeof(&a[0]+1),&a[0]+1表示拿到第二行的地址,既然是地址那就是4或8字節(jié)。

第九題:sizeof(*(&a[0] + 1)),&a[0]+1表示的是第二行的地址,*(&a[0] + 1)表示的是拿到

第二行的所有元素,,所以大小是4*4=16字節(jié) 。

第十題:sizeof(*a),*a表示拿到第一行所有元素,所以大小是4*4=16字節(jié)。

第十一題:sizeof(a[3]),a[3]雖然表面上越界了,但是sizeof是不會(huì)去運(yùn)算的,故還是和

前面的一維數(shù)組一樣的大小為16字節(jié)。

答案驗(yàn)證:

64位平臺(tái)下:

32位平臺(tái)下:

此類篇幅完結(jié)了,歡迎大佬們指正

那咱們下期見

到此這篇關(guān)于C語(yǔ)言strlen和sizeof在數(shù)組中的使用詳解的文章就介紹到這了,更多相關(guān)C語(yǔ)言 strlen內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)中使用模板(dynamic libraries ,static libraries)

    在動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)中使用模板(dynamic libraries ,static libraries)

    給大家介紹一下在動(dòng)態(tài)庫(kù)(dynamic libraries)和靜態(tài)庫(kù)(static libraries)使用模板(template)的用法和解決方案。
    2017-11-11
  • 數(shù)據(jù)結(jié)構(gòu)之紅黑樹詳解

    數(shù)據(jù)結(jié)構(gòu)之紅黑樹詳解

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之紅黑樹詳解,紅黑樹是一種自平衡二叉查找樹,它的統(tǒng)計(jì)性能要好于平衡二叉樹(AVL樹),因此,紅黑樹在很多地方都有應(yīng)用,需要的朋友可以參考下
    2014-08-08
  • C/C++中的mem函數(shù)和strcopy函數(shù)的區(qū)別和應(yīng)用

    C/C++中的mem函數(shù)和strcopy函數(shù)的區(qū)別和應(yīng)用

    strcpy和memcpy都是標(biāo)準(zhǔn)C庫(kù)函數(shù),strcpy提供了字符串的復(fù)制而memcpy提供了一般內(nèi)存的復(fù)制。下面通過本文重點(diǎn)給大家介紹C/C++中的mem函數(shù)和strcopy函數(shù)的區(qū)別和應(yīng)用,非常不錯(cuò),感興趣的朋友一起看下吧
    2016-08-08
  • 怎么在C++二進(jìn)制文件中注入git信息詳解

    怎么在C++二進(jìn)制文件中注入git信息詳解

    這篇文章主要給大家介紹了關(guān)于怎么在C++二進(jìn)制文件中注入git信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-06-06
  • C語(yǔ)言實(shí)現(xiàn)實(shí)時(shí)鐘表

    C語(yǔ)言實(shí)現(xiàn)實(shí)時(shí)鐘表

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)實(shí)時(shí)鐘表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • c/c++中struct定義、聲明、對(duì)齊方式解析

    c/c++中struct定義、聲明、對(duì)齊方式解析

    這篇文章通過C/C++的兩種聲明方式開始,給大家詳細(xì)分析了/c+中struct定義、聲明、對(duì)齊方式,對(duì)此有興趣的朋友可以參考學(xué)習(xí)下。
    2018-03-03
  • 詳解C語(yǔ)言如何執(zhí)行HTTP GET請(qǐng)求

    詳解C語(yǔ)言如何執(zhí)行HTTP GET請(qǐng)求

    在現(xiàn)代互聯(lián)網(wǎng)時(shí)代,網(wǎng)絡(luò)數(shù)據(jù)的獲取和分析變得越來越重要,本文我們將使用C語(yǔ)言和libcurl庫(kù)來編寫一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲,以執(zhí)行HTTP GET請(qǐng)求并獲取淘寶網(wǎng)頁(yè)的內(nèi)容,感興趣的可以了解下
    2023-11-11
  • 詳解C/C++高精度(加減乘除)算法中的壓位優(yōu)化

    詳解C/C++高精度(加減乘除)算法中的壓位優(yōu)化

    在高精度計(jì)算中數(shù)組的每個(gè)元素存儲(chǔ)一位10進(jìn)制的數(shù)字,這樣的存儲(chǔ)方式并不是最優(yōu)的,32位的整型其實(shí)至少可以存儲(chǔ)9位高精度數(shù)字,數(shù)組元素存儲(chǔ)更多的位數(shù)就是壓位優(yōu)化。本文將展示壓位優(yōu)化的原理以及壓9位的實(shí)現(xiàn)和性能對(duì)比,需要的可以參考一下
    2023-01-01
  • 淺談C++的淺拷貝出現(xiàn)的錯(cuò)誤

    淺談C++的淺拷貝出現(xiàn)的錯(cuò)誤

    下面小編就為大家?guī)硪黄獪\談C++的淺拷貝出現(xiàn)的錯(cuò)誤。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • C++深入探究類與對(duì)象之友元與運(yùn)算符重載

    C++深入探究類與對(duì)象之友元與運(yùn)算符重載

    友元就是讓一個(gè)函數(shù)或者類,訪問另一個(gè)類中的私有成員;打個(gè)比方,這相當(dāng)于是說:朋友是值得信任的,所以可以對(duì)他們公開一些自己的隱私,運(yùn)算符重載的實(shí)質(zhì)就是函數(shù)重載或函數(shù)多態(tài),運(yùn)算符重載是一種形式的C++多態(tài),目的在于讓人能夠用同名的函數(shù)來完成不同的基本操作
    2022-04-04

最新評(píng)論