當前位置:首頁 » 編程語言 » c語言返回指針數組

c語言返回指針數組

發布時間: 2022-06-13 05:03:32

c語言中,return語句怎麼樣返回一個數組

首先,C/C++只能返回數組的指針而不能返回整個數組。即使返回數組的指針,但如果函數中的數組是自動性質,那將是危險的。這是比較正宗的表述。如果確實需要從函數中返回自動性質的數組的全部元素值,有沒有辦法呢?有。由於C/C++是允許返回結構體的,可以定義一個結構體模板,把數組作為成員安排在其中,函數中臨時聲明結構體變數,操作其中的數組;完畢後返回結構體變數,在主調函數中用同類型的結構體變數接收就可間接實現「返回一個數組」。舉例代碼如下:

#include"stdio.h"
structA{
intm[30];//把數組m安排在結構體A中
};
structAfun(intn){
inti,j,k;
structAs;//在函數中聲明自動型結構體變數s
for(i=0;i<n;s.m[i++]=i+1);//為結構體成員數組m賦值1~15
for(j=n-1,i=0;i<j;i++,j--)//倒序這個數組
k=s.m[i],s.m[i]=s.m[j],s.m[j]=k;
returns;//返回結構體變數s
}
intmain(intargc,char*argv[]){
Aa;//主調函數中聲明同類型結構體變數a接收函數fun的返回值
inti;
a=fun(15);//用15調用fun(不要大於30,只是舉例),將結果賦於a
for(i=0;i<15;i++)//輸出看看是不是倒序了...
printf("%d",a.m[i]);
printf(" ");
return0;
}

運行結果如下:

⑵ c語言中 如果想讓一個函數返回數組指針,函數返回類型應該怎麼定義

int(*fun())[10];
fun是一個返回數組指針int(*)[10]的函數

⑶ C語言用返回指針值的函數輸出數組

因為input()函數創建的數組num[5]作用域在input()函數之內,當input()函數調用結束後,這段內存會被回收,也就是裡面的值會變成其他數。修改辦法是在堆區創建數組變數手動釋放內存!

修改後:


⑷ C語言 通過指針從函數返回一個數組,編一道簡單的程序解釋

通過指針從函數返回一個數組

換句話說,返回的並不是數組,而是數組的首地址!

#include<stdio.h>
int*fun()//返回類型int*,與returna中的a的類型相同才可以!
{
staticinta[]={1,2,3};//靜態變數,函數結束後,不會被系統回收
returna;//返回數組名,即數組首地址
}

intmain()
{
int*p=fun();//定義整型指針p接收返回地址
inti;
for(i=0;i<3;i++)//遍歷返回的地址中的數據!
printf("%d",p[i]);
printf(" ");
return0;
}

⑸ C語言中,怎樣定義函數可以讓函數返回一個指針數組

返回它的地址不就行了么,指針數組的首地址就可以了
比如
有一個指針數組
char
*p[10]
=
{這裡面放的都是指針},那麼p的類型就是char
**類型
你定義一個函數,返回char
**類型就行了
比如
char
**fun()
{
char
**s;
return
s;
}

⑹ C語言,返回數組和指針

因為char p[]="abcdefg";這個字元串是放在棧上的 函數一退出 棧就釋放了 char *p這樣不是放在棧上 是放在靜態儲存區里 函數退出後 這段內存還一直存在。

⑺ C語言中怎樣使用返回指針的函數來表示數組

不能訪問x數組,因為array是局部變數,在調用完後array的空間會被銷毀。如果你要用數組的空間,你可以傳入一個數組變數,再把它返回。或者用malloc分配一個空間

⑻ c語言中怎樣返回一個數組

在C語言中,無法直接返回一個數組,但是可以通過返回對應類型指針的方式,返回數組。

在大多數情況下,一維數組和一維指針是可以通用的。


比如,定義一個函數,申請一定長度的整型動態數組,其長度用參數傳入,並將結果返回。如出錯,返回空指針NULL。 代碼可以寫成如下形式:

int*int_array_create(intn)//參數n為數組元素個數
{
int*r;
if(n<=0)returnNULL;//參數錯誤
r=(int*)malloc(sizeof(int)*n);//申請內存空間,大小為n個int長度。
returnr;//返回得到的整型數組的指針。
}

⑼ 求問c語言問題,調用函數中 如何做能讓結果返回值為指針數組

C/C++里指針和數組用法是通用的,返回一個二級指針,然後按照指針數組的用法使用即可。
char
**
f1();
char**
p=f1();//接收函數返回值
printf
("%s",p[2]);//輸出第三個成員的內容

⑽ c語言 函數返回數組指針

由於你在子函數int *shuzu(void)中定義的數組 a[4];屬於局部變數,在子函數結束時會被釋放,所以返回的指針變成野指針,會亂碼;簡單的解決方法有兩種,1. 將數組定義在主函數之前(#include <stdio.h>下面),那麼就變成了全局變數,不會被釋放了;2.使用malloc或者calloc開空間後再賦給這個數組,這樣也不會被釋放了;第一種方法有缺點,以後學到全局變數的時候會知道,第二種方法估計你還沒學到,不過很簡單,網路一下就會了~~~

熱點內容
手機如何解壓百度雲文件 發布:2024-05-19 00:32:24 瀏覽:904
centos使用python 發布:2024-05-18 23:39:48 瀏覽:867
幻影天龍腳本 發布:2024-05-18 23:38:17 瀏覽:712
編程的py 發布:2024-05-18 23:36:22 瀏覽:74
安卓系統怎麼改序列號 發布:2024-05-18 23:28:16 瀏覽:783
c語言中實數 發布:2024-05-18 23:21:03 瀏覽:895
伺服器搭建題目 發布:2024-05-18 23:01:29 瀏覽:28
下載武裝突襲後怎麼進伺服器 發布:2024-05-18 22:56:17 瀏覽:825
c語言字元串大寫變小寫 發布:2024-05-18 22:56:16 瀏覽:438
重啟刪除的文件夾 發布:2024-05-18 22:34:11 瀏覽:638