免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
數(shù)組傳參的問題
 

數(shù)組名的蛻化  
   
  數(shù)組在作為函數(shù)參數(shù)時,數(shù)組名將蛻化為指針。書上為什么這么說呢?書上的意思是說這家伙已經(jīng)蛻化得不知道自己有幾個元素了。舉個例子:  
  void   fun(char   array[5]);  
  在編譯時編譯器會當成是:void   fun(char   *array);你在這個函數(shù)中使用sizeof(a)得到的值是4,而在定義char   array[5]的函數(shù)中sizeof(array)   =   5,說明確實已經(jīng)蛻化為指針了。所以你寫:  
  char   *pa   =   array   ;   //正確,指針到指針  
   
  數(shù)組名退化為指針,在這里強調(diào)一下:數(shù)組的元素類型仍然存在!這里要注意的是多維數(shù)組的情況。  
  以2維數(shù)組為例:  
  void   fun2(char   arrayMulti[3][5]);  
  那么在函數(shù)fun2中,arrayMulti蛻化成的是char   (*)[5],即:指向char[5]類型的指針,因為前面分析過arrayMulti的元素的類型是char[5],所以在程序中:  
  char   **pm   =   arrayMulti   ;   //錯誤:從char   (*)[5]到   char   **的賦值  
  char   (*pm5)[5]   ;  
  pm5   =   arrayMulti   ;   //正確。   

>>   數(shù)組在作為函數(shù)參數(shù)時,數(shù)組名將蛻化為指針。書上為什么這么說呢?書上的意思是說這家伙已經(jīng)蛻化得不知道自己有幾個元素了。  
   
  很形象,也抓住了重點。  
   
  其實根據(jù)標準的規(guī)定,不僅僅是數(shù)組在作為函數(shù)參數(shù)時數(shù)組名將退化為指針——除了作為sizeof和&的操作數(shù)之外,在表達式中出現(xiàn)的數(shù)組名都不知道自己有幾個元素,所以這時它的類型已經(jīng)不再是數(shù)組類型了,而是decay為一個指針。  
   
  舉例說明:  
   
  int   a[10];       //   定義   a   的類型為   int[10],數(shù)組類型  
  int*   p   =   a;     //   a   的類型為   int*,指針類型,不再是數(shù)組類型。  
  a[0]   =   0;         //   a   的類型為   int*,指針類型,不再是數(shù)組類型。并且   a[0]   =   *(a+0)   =   *a。  
  sizeof(   a   );   //   a   的類型為   int[10],數(shù)組類型。  
  p   =   &a;             //   a   的類型為   int[10],數(shù)組類型。因此,&a   的類型為int   (*)[10],是指針類型,但是跟   p   的指針類型(int*)不匹配,因此賦值非法。  
   
  總之,只要排除了sizeof和&這兩種情況,在程序中把數(shù)組名作為指針來使用就是了,而且是一個指向數(shù)組首元素的指針(即數(shù)組名代表的值就是數(shù)組第一個元素的地址)。 

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
總結(jié):c語言中指針的學習
Google 網(wǎng)上論壇 : cn.bbs.comp.lang
C零碎知識整理
快來看看這些c語言的基礎知識你掌握了嗎?
C語言——小知識
深入理解c語言數(shù)組
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服