【擴充知識3】數組的一些難事,擴充數組難事

來源:互聯網
上載者:User

【擴充知識3】數組的一些難事,擴充數組難事

【擴充知識3】數組的一些難事

 

擴充目錄

1.        &array+ 1

2.        array+1

3.        &array[ 0 ]+ 1

 

關於&array+ 、array+ 1 和&array[0]+ 1的問題,特別難纏,特難搞懂~—~。所以今天拿來講解講解。

由於數組中的各元素的儲存單元是連續分配的,因此可以用指標形式來訪問數組,數組名就是該數位首個地址。

如: intarray[100];

      array 就是該數組的首地址,其值等於& array[0]

PS: 通過收地址,可以很快的、方便的訪問數組中的其他元素值,方法如下:

        首地址+ 位移量

第i 個元素的值可以是   *(array+i), *(&array[0]+i),  array[ i ]

 

array是數組首元素的首地址,與&array[0]相同,而&array是取數組首地址。

 

[程式1]

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

運行結果:

          array[ 1 ]= 2

         *(array+1)= 2

*(&array[ 0 ]+ 1 )= 2

 

[程式 2]

#include <stdio.h> int main( void ){         int array[ 5 ]= { 1, 2, 3, 4, 5 };                 printf( "        array[ 1 ]= %d\n", array[ 1 ] );         printf( "        *(array+1)= %d\n", *(array+ 1) );        printf( "     *( &array+ 1 )= %d\n", *( &array+ 1 ) ); //越界 !!!                  return 0;}


運行結果:

          array[ 1 ]= 2

         *(array+1)= 2

*(&array[ 0 ]+ 1 )= 2293440

 

分析:

array:   是數組首元素的首地址,也就是array[0]的首地址

&array:是取數組的首地址。

 

&array+ 1:

取數組array的首地址,該地址的值加上sizeof( array ),即&array+ 5* sizeof( int ),也是下一個數組的首地址。   

array+ 1://等同於&array[ 0 ]+ 1;

是取數組下一個元素的首地址,就是array[ 1 ]的首地址。

 

發現&array+ 1的地址越界了,其為array[5]的地址,即&array+ 1= &array+ 5* sizeof( int )。而array+1和&array[0]的地址就是array[1]的地址。

 

【指尖的微笑】錯誤在所難免,希望得到大家的指正^-^

轉載時保留原文的連結http://codingit.howbbs.com和http://blog.csdn.net/mirrorsbeyourself

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.