關於函式返回指標

2021-05-23 20:40:40 字數 458 閱讀 1363

昨天遇到乙個小問題。假設function  foo()返回乙個指標,該函式目的在於從系統中獲取一些資訊,然後以指標的形式返回給使用者。

這裡的指標是指向乙個全域性變數的(比如用乙個全域性的結構體來儲存資訊)。當使用者區呼叫的時候,可以先宣告乙個指標,讓後將

結果返回給該指標。當使用者每次呼叫之後就使用該指標時不會出現問題。但是當再次呼叫foo()並傳遞其他引數就會出現如下問題:

這裡的結果是當第二次呼叫時第一次的指標被覆蓋,最終memcmp返回0.因為他們指向了同樣的東西。

怎麼解決呢,如果不改foo(),那麼只能引入乙個臨時變數來儲存ptr1的內容,然後再與之比較。

關於函式返回指標,這個指標肯定不能指向區域性變數的,那麼也就意味著要麼全域性,靜態,或者函式引數的一部分。總之要在函式返回後該指標指向的記憶體仍然有效。但是使用者使用的時候一般並不知道該指標是指向全域性的,從而導致問題。有什麼好辦法重寫這些返回指標的函式來避免這些問題麼?

關於函式指標陣列與返回陣列指標的函式

關於函式指標陣列與返回陣列指標的函式 2007 08 15 08 34 int a int int p 10 第一種情況為陣列裡面是函式指標的情況,因為 int int 是乙個強制轉換方式,將裡面的a這個陣列轉換成了乙個函式指標的陣列,並且該函式是乙個帶乙個整型變數,並且返回乙個整型的函式.第二種情...

關於指標陣列指標做為返回型別的函式

今天被一哥們叫了看了一段程式。裡面有這樣一段 c c code int func int n 3 反應如下 這是乙個陣列。這是乙個指標陣列。這是乙個函式指標陣列。到後面又看到然後有這樣的用法 c c code func n temp 這難道是乙個函式?那麼 3 又表示什麼呢。然後就分析了下。後來才發...

指標與函式 返回函式指標

返回函式指標,其實就是返回乙個函式。返回值為乙個函式名就可以了。includeint add int num1,int num2 int subtract int num1,int num2 typedef int fptroperation int,int fptroperation select...