sizeof 陣列名 和sizeof 指標

2021-07-05 01:28:43 字數 542 閱讀 7813

在做這道題時:

32位環境下,int *p=new int[10];請問sizeof(p)的值為()

a、4              b、10              c、40               d、8

我以為正確答案為c,int型別為32位,佔四個位元組,10個自然就是40了,結果正確答案為a,只是指標p佔的空間。

因此寫段**測試一下:

[cpp]view plain

copy

#include

using

namespace

std;  

void

fun(

int*p)  

intmain()    

結果輸出:

陣列名40

指標4在函式中4

由此可見,陣列名並不是完全等同於指標。雖然它們都可以通過指標方式訪問陣列。在這個部落格看到他們的區別:

但是陣列在作為函式引數傳遞過程中,會退化成指標。這也是為什麼指標作為引數傳遞時,經常要乙個長度。

sizeof 陣列名 和sizeof 指標

在做這道題時 32位環境下,int p new int 10 請問sizeof p 的值為 a 4 b 10 c 40 d 8 我以為正確答案為c,int型別為32位,佔四個位元組,10個自然就是40了,結果正確答案為a,只是指標p佔的空間。因此寫段 測試一下 cpp view plain copy...

sizeof 陣列名 及strlen(陣列名)

程式的輸出結果為 1 100 2 4 3 1 相當於a 100 這個數所佔的位元組大小,也就是乙個char位元組占得大小 當陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標。不論陣列a的容量是多少,sizeof a 始終等於sizeof char func char p int main ...

sizeof 陣列名 and sizeof 指標

看一下 include using namespace std void hehe int p cout 由此可見,陣列名並不是完全等同於指標。雖然它們都可以通過指標方式訪問陣列。但是陣列在作為函式引數傳遞過程中,會退化成指標。這也是為什麼指標作為引數傳遞時,經常要乙個長度。最後,c 中new陣列的...