【指標與數組區別】ch[]與*ch

來源:互聯網
上載者:User

【指標與數組區別】ch[]與*ch??RT,這兩個有的時候可以替換。但是存字串時卻不完全相同。char ch1[]="我愛你";char *ch2="我愛你";cout<<sizeof(ch1)<<endl;//結果7cout<<sizeof(ch2)<<endl;//結果4我知道第二個是首地址,但第一個是什麼,不懂啊,不是首地址嗎?
----------------
如鵬站內搜尋“指標 數組 區別”
http://so.rupeng.com/?keyword=%E6%8C%87%E9%92%88+%E6%95%B0%E7%BB%84+%E5%8C%BA%E5%88%AB

如下文章供參考:
1、數組與指標---都是"退化"惹的禍【轉載】
2、char *與char[ ]的一點疑問
3、看"char *與char[ ]的一點疑問"得到的一些結論
4、Sizeof與Strlen的區別
5、C/C++數組名與指標區別深入探索
回答:
5. 指標變數的sizeof

  學過資料結構的你應該知道指標是一個很重要的概念,它記錄了另一個對象的地址。既然是來存放地址的,那麼它當然等於電腦內部地址匯流排的寬度。所以在32位電腦中,一個指標變數的傳回值必定是4(注意結果是以位元組為單位),可以預計,在將來的64位系統中指標變數的sizeof結果為8。

  char* pc = "abc";

  int* pi;

  string* ps;

  char** ppc = &pc;

  void (*pf)();// 函數指標

  sizeof( pc ); // 結果為4

  sizeof( pi ); // 結果為4

  sizeof( ps ); // 結果為4

  sizeof( ppc ); // 結果為4

  sizeof( pf );// 結果為4

  指標變數的sizeof值與指標所指的對象沒有任何關係,正是由於所有的指標變數所佔記憶體大小相等,所以MFC訊息處理函數使用兩個參數WPARAM、LPARAM就能傳遞各種複雜的訊息結構(使用指向結構體的指標)。

  6. 數組的sizeof

  數組的sizeof值等於數組所佔用的記憶體位元組數,如:

  char a1[] = "abc";

  int a2[3];

  sizeof( a1 ); // 結果為4,字元 末尾還存在一個NULL終止符

  sizeof( a2 ); // 結果為3*4=12(依賴於int)

  一些朋友剛開始時把sizeof當作了求數組元素的個數,現在,你應該知道這是不對的,那麼應該怎麼求數組元素的個數呢Easy,通常有下面兩種寫法:

  int c1 = sizeof( a1 ) / sizeof( char ); // 總長度/單個元素的長度

  int c2 = sizeof( a1 ) / sizeof( a1[0] ); // 總長度/第一個元素的長度

  寫到這裡,提一問,下面的c3,c4值應該是多少呢

  void foo3(char a3[3])

  {

  int c3 = sizeof( a3 ); // c3 ==

  }

  void foo4(char a4[])

  {

  int c4 = sizeof( a4 ); // c4 ==

  }

  也許當你試圖回答c4的值時已經意識到c3答錯了,是的,c3!=3。這裡函數參數a3已不再是數群組類型,而是蛻變成指標,相當於char* a3,為什麼仔細想想就不難明白,我們調用函數foo1時,程式會在棧上分配一個大小為3的數組嗎不會!數組是“傳址”的,調用者只需將實參的地址傳遞過去,所以a3自然為指標類型(char*),c3的值也就為4。
源自百科

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/helihui123/archive/2009/10/24/4722036.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.