c 返回乙個陣列

2021-09-12 12:58:55 字數 963 閱讀 1922

bqg』s complexity analysis

最近遇到乙個很不一般的事情,返回乙個陣列時,我們可以直接返回它的首位址,但是如果呼叫兩次以上,返回的數值就是有問題的了。

呼叫兩次js()函式,分別用a、b陣列存放返回的陣列值,但是接收到返回的數值居然和我返回前存放的數值不一樣。

**:(及改善)

#include #include#includeusing namespace std;

const int maxn=100+10;

int *js(char t)

if(t[3]=='^') //g1存幾次方

else}}

int len=strlen(t);

for(int i=pos; i+3='0'&&t[j]<='9')

else

}break;}}

break;}}

// int *a= new int[2];//這個是正確的

int a[2];//這個定義 ,就是錯誤的數值

a[0]=g1;

a[1]=h1;

cout<

else if(a[0]b[1])

else if(a[1]錯誤原因:函式體內部建立的變數都是區域性變數,當函式執行結束的時候,都會拋棄,也就是說你只返回了乙個a指標,這個指標確實是你想要的,這沒有問題,但是它指向的內容在函式結束也就是return的那一刻之後就已經物是人非了。所以你用這個這個指標去訪問的內容也不是你想要的內容了。

解決方法:動態記憶體分配,就是new和delete的配合使用。在函式裡用new關鍵字建立乙個陣列,這樣這塊位址對應的內容就屬於你管理了,再也不會在函式結束的時候被**了,你也就可以通過返回的指標來訪問陣列了,最後再delete一下。

c語言,c 函式返回乙個陣列,二維陣列

與其他高階語言相比,c語言,c 最大的不方便之處就是 函式只能返回乙個數值。若要返回乙個陣列,必須用到指標以及動態分配記憶體。這是乙個坎,就如學結他時的大橫按一樣,不少人在這個坎上望而卻步。我前幾年一直看不懂,最近重溫c 與c 的動態記憶體,發現忽然明白會用了。可能經過這幾年大量的程式設計,越來越具...

c 輸出乙個陣列

關於c 輸出乙個陣列最普遍的方法就是用for 迴圈語句寫 如 int a new int 10 for int i 0 i a.length i for int j 0 j 今天我在瀏覽stackoverflow的時候發現了兩個簡便的輸出陣列的語句 鏈結如下 乙個是 foreach var item...

C語言 通過指標從函式返回乙個陣列

忘記最初在網上想找什麼資料了,偶然間看到這篇的,如果讓我自己寫的話,肯定不會寫的,好好學習了下。嚴格的講,無法直接從函式返回乙個陣列。但是,可以讓函式返回乙個指向任何資料結構的指標,當然也可以是乙個指向陣列的指標。下面直接貼 view plain copy to clipboard print?in...