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...