国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C/C++中接收return返回來的數組元素方法示例

2020-01-26 13:50:23
字體:
來源:轉載
供稿:網友

本文主要給大家介紹了關于C/C++接收return返回來的數組元素的相關內容,下面話不多說了,來一起看看詳細的介紹吧。

return

return 在執行之前會創建一個臨時的變量,來保存要傳回的值,

返回值:返回一個副本值,原本的已被消除

返回指針:當返回的時候,原指針空間會被消除,如果沒有被其它程序使用,則是能正確返回,如果釋放后被其它程序使用,則會有可能修改掉此空間內的值,返回值會錯誤;

引言

我們知道return語句作為被調用函數的結束,返回給調用者函數值。一般來說,是返回一個函數值,像一個int, double,char等類型的數據,當然也可以是他們的指針。但是當我們遇到要返回很多數怎么辦呢?通常想到的是以數組的形式返回,下面就讓我們來看看:

通常來說有兩種方式:

1.通過返回傳入數組指針的方式;

2.以指針變量作為函數參數,來實現數組的返回。

一、返回傳入數組指針的方式

首先我們來看看這種方法所涉及的知識:

(1)指針函數。C語言中允許一個函數返回值是一個指針(地址)基本格式是: 基類型 * 函數名(參數列表)

(2)靜態變量與局部變量。我們知道C語言程序在運行時,操作系統會給其分配內存空間。這段空間主要分為四個區域,分別是棧取,堆區,數據區,代碼區。那么靜態變量是存放在數據區,作用范圍是全局的,在內存中只存儲一份。局部變量通常放在棧中,隨著被調用的函數的退出內存空間自動釋放。 要接收被調函數返回的指針,那么可以使用一個指針變量。關鍵是被調函數用什么去返回數組的首地址,正如前面所說,被調函數在執行完之后內存空間就被釋放。這里提供兩種方法解決這一問題:1)通過傳入一個空的數組頭地址,返回這個變量

//通過返回傳入數組的指針的方式#include"stdio.h"#include<iostream>using namespace std;//定義指針函數int *copy(int array[], int a[], int n);int main(){ int size = 4; int a2[4]; int a1[4] = {3, 5, 7 ,8}; int *p; p = copy(a1, a2, size); cout << p[0] << " " << p[1] << " "<<p[2] << " " << p[3] << endl; return 0;}int *copy(int array[], int a[], int n){ for(int i = 0; i < n; i++) a[i] = array[i]; return a;}

 代碼中我們可以看到通過返回main函數中的a數組的首地址,將其付給指針變量p,從而達到數組傳遞的作用。程序允許結果是如下:

 2) 我們知道靜態變量能夠在整函數作用有效那么,我們可以定義一個靜態的局部變量的數組來達到返回的效果:

//使用靜態變量進行返回 #include<stdio.h>//定義產生數組的函數 int *TestFuction(); int main(){ int *p; p = TestFuction(); while(*p != 0){ printf("%d", &p);  p++; }  return 0;} int *TestFuction(){ static int test[5] = {8, 4, 5, 2, 7}; return test;}

從上面代碼可知test數組是一個靜態變量,在被調函數執行完成之后不會被釋放,執行結果如下:

 二、以指針變量作為函數參數,實現數組的返回

指針變量變量需要動態分配內存,通常放在堆區中,該區域內通常又程序員分配或釋放。將要處理的數組的首地址以實參的形式傳遞給函數處理,處理完后的指針適合實參的數組同一塊地址,達到返回數組的效果。

示例代碼如下:

//使用指針變量作為函數參數,來實現數組的返回#include<iostream>//定義一個以指針變量作為形參的函數,n作為循環次數void SumTest(int *p, int n);using namespace std;int main2(){ int i = 0; int a[5] = {8, 5, 3, 2, 6}; SumTest(a, 5); while(i < 5){ cout << a[i] << " "; i++; } cout << endl; return 0;}void SumTest(int *p, int n){ int i = 0; while(i < n){ *p = *p + 1; p++; i++; }}

 如代碼所示,指針變量作為參數傳入函數中,進行數據處理,之后返回的就是處理后的數據。執行結果如下:

以上幾種方法就能夠實現,數組的返回。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绵竹市| 财经| 咸宁市| 屯门区| 五原县| 库伦旗| 伽师县| 雅安市| 广东省| 天门市| 孟连| 双鸭山市| 全椒县| 茂名市| 凤山市| 高碑店市| 建阳市| 绵竹市| 汉川市| 漳州市| 东乡族自治县| 滨海县| 宁城县| 东乡族自治县| 崇阳县| 乌苏市| 视频| 神农架林区| 田阳县| 繁峙县| 宁都县| 镇远县| 英德市| 汝阳县| 田林县| 密云县| 夏津县| 塘沽区| 丰县| 舟曲县| 教育|