C 語言中陣列 arr 和 arr 對應的位址為什麼一樣?

時間 2021-05-31 10:11:36

1樓:

題主初學吧,真要搞懂的話,詳細看看c的發展史跟各個時期的標準制定。對於型別的隱式轉換其實一直是c的最大的優點靈活,也是乙個缺點,容易出問題。很多程式的溢位問題都是出在這個上面。

所以就初學者而言,理解到最高票答案的那個程度就可以了。把問題記下來,等你以後接觸的書籍越來越多,越靠近底層,你會對c有更深的理解。

2樓:啊魚

arr本身不是乙個指標變數,

不像乙個指標需要另外的空間儲存,

所以arr本身用&取位址是沒有意義的,

或者說是不需要這個意義的,

但是為了方便一些情況,規定&arr等於arr,也有覺得是&arr才是位址,arr才是強行規定等於&arr

3樓:朱涵俊

struct t;

&arr相當於struct t*型別,arr是陣列,arr跟&arr位址相同。

跟這個,int i=10,int *p=&i; char *pc=(char *)&i;

p跟pc的位址一樣,但是型別不一樣,p+1跟pc+1,區別就出來了,位址不一樣了。

4樓:Xi Yang

沒有地方單獨儲存這個開始位址,因為不需要。你對陣列的直接使用,其位址是在編譯期確定並寫死的。

只有下面這樣,才有你期望的那個東西:

int array_data[3] = ;

int* array_p = &array_data[0];

printf("addr that store the array addr: %p\n", &array_p);

java中for迴圈複製陣列和使用Arrays copyOf哪個快?

Ryan Chang 吃不準就做個測試.long start1 System currentTimeMillis int arrayOrg new int 1000000 Random rand new Random System currentTimeMillis for inti 0 i len...

2021 04 04 給定乙個非負陣列arr,和乙個正數m。 返回arr的所有子串行 如何解答呢?

Joker 先求字首和。掃瞄字首和陣列 Sum i Sum i m 插入到 Set 裡面 同時求 Sum i m 和 Sum i m m 的upper bound 就是比它大的最小 Set 中元素 upper bound 對應乙個 Sum j 用這個 Sum i Sum j m 更新答案。更新答案的...

C語言中多維陣列是否慢於一維陣列?

土地測量員 對於在全域性或者棧上分配的多維陣列 也就是位址是連續的 都可以看成是一維陣列模擬出來的,要訪問某個元素肯定存在著計算偏移量的過程,不過是交給編譯器幫你來完成這個過程了 其實可以看成語法糖的樣子?所以它比起一維是要慢一點。不過很多時候,某些東西從邏輯上來講就是多維的,你用一維的思路無法解決...