1. 程式人生 > >c++-在函式中返回陣列的常用方法

c++-在函式中返回陣列的常用方法

一般應用情景:

在fun1函式中處理完某個陣列之後,返回此陣列到另一個函式中。

方法:

  • 使用全域性變數:這種方法最方便,但此方法打破了函式間的通訊及封裝的思想,所以不推薦使用。

    比較簡單,就不舉例了;

  • 通過堆區動態開闢記憶體解決:C++中,我們通常用new來在堆區動態開闢記憶體,利用堆區“現用現開闢,用完手動收回”特點,實現靈活管理。是實際開發中的常用辦法。

動態開闢空間在堆區,手動開闢,手動釋放。
用new開闢
用delete釋放
#include "pch.h"
#include<iostream>
using namespace std;

char* fun
(char name[]) { char *dir; dir = new char[50]; cout << "請輸入圖片存放路徑: " << endl; cin >> dir; int k = 0; int nlen = strlen(name); int dlen = strlen(dir); for (int j = 0; j < nlen; j++) { dir[dlen] = name[j]; dlen += 1; } dir[dlen] = '\0'; return dir; } int main() { char *
path; char name[] = "1.txt"; path = fun(name); cout << "path: " << path; delete path; return 0; }

在這裡插入圖片描述

  • 由呼叫方傳入陣列指標:此種方法不需要函式返回地址,而是在呼叫時直接傳入陣列地址,委託被呼叫方進行操作,由於此區域性變數屬於呼叫方本身,故即便被呼叫方結束記憶體釋放,也不會被影響到該陣列。
#include "pch.h"
#include<iostream>
using namespace std;

void fun(char name[],
char path[]) { cout << "請輸入圖片存放路徑: " << endl; cin >> path; int k = 0; int nlen = strlen(name); int dlen = strlen(path); for (int j = 0; j < nlen; j++) { path[dlen] = name[j]; dlen += 1; } path[dlen] = '\0'; } int main() { char path[50] ="\0"; //cout << path << endl; 輸出空行 char name[] = "1.txt"; fun(name,path); cout << "path: " << path; return 0; }

在這裡插入圖片描述