由于你在子函數int *shuzu(void)中定義的數組 a[4];屬于局部變量,在子函數結束時會被釋放,所以返回的指針變成野指針,會亂碼;簡單的解決方法有兩種,1. 將數組定義在主函數之前(#include stdio.h下面),那么就變成了全局變量,不會被釋放了;2.使用malloc或者calloc開空間后再賦給這個數組,這樣也不會被釋放了;第一種方法有缺點,以后學到全局變量的時候會知道,第二種方法估計你還沒學到,不過很簡單,百度一下就會了~~~
創新互聯建站專業為企業提供唐山網站建設、唐山做網站、唐山網站設計、唐山網站制作等企業網站建設、網頁設計與制作、唐山企業網站模板建站服務,10多年唐山做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
在C語言中,無法直接返回一個數組,但是可以通過返回對應類型指針的方式,返回數組。
在大多數情況下,一維數組和一維指針是可以通用的。
比如,定義一個函數,申請一定長度的整型動態數組,其長度用參數傳入,并將結果返回。如出錯,返回空指針NULL。 代碼可以寫成如下形式:
int?*int_array_create(int?n)//參數n為數組元素個數
{
int?*r;?
if(n=0)?return?NULL;//參數錯誤
r?=?(int?*)malloc(sizeof(int)*n);//申請內存空間,大小為n個int長度。
return?r;//返回得到的整型數組的指針。?
}
首先,你不應該返回局部變量的指針,因為局部變量在離開函數后就會被銷毀。如果你想這樣返回一個數組的話,你應該malloc出一個數組來返回。
至于應該return什么,return
(malloc出來的那個指針)就可以了。
例如
int**
foo()
{
int
**p
=
(int
**)malloc(sizeof(int
*)*10);
...
...
...
return
p;
}
這個p指向一個內存段,這個內存段存有十個int*類型的元素。
本文名稱:c語言函數返回數組指針 c語言函數調用數組指針
文章起源:http://m.kartarina.com/article38/dodsisp.html
成都網站建設公司_創新互聯,為您提供App設計、App開發、網站導航、關鍵詞優化、微信公眾號、商城網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯