2013-07-30 40 views
-1

我正在編寫一個套接字編程應用程序。 C++和Java作爲兩端。我的系統 使用Java,使用我係統的應用程序使用C++。指向一個變量的指針和指向一個元素的數組的指針

我收到一個來自C++的指針,它包含一些數據,它可能是一個變量或數組。 還有另一個變量nrOfData,它告訴指針包含多少個元素。 我必須相應地填充一個類型爲String或String []的對象。 但我的問題是,nrOfData == 1,則有兩個一個varaible或陣列(含數組一個元素) 我在這裏給一個示例程序posibility(試圖獲得更多的類似的一個)

#include<iostream> 
using namespace std; 


void func(string **strPtr) 
{ 
    if(someCondition) 
    { 
    *strPtr = new string; 
    } 
    else 
    { 
    *strPtr = new string[1]; 
    } 
} 

int main() 
{ 
    string *strPtr; 
    func(&strPtr); 
    /* I have to fill a variable and send to next level 
    strPtr contains one element in both cases. How could i determine whether 
    I need to fill String or String[]*/ 
} 

我應該嚴格要求。 感謝您的幫助!

+5

首先,停止使用'new'。那麼,你確定你不能放棄混合數組和非數組的需求嗎?這導致比您需要更多的麻煩。 –

+3

也許只是使用'std :: vector's,並將引用傳遞給周圍的人?向量可以包含零個或多個元素,並且您可以使用「std :: vector :: size」來獲取元素的數量。 – m01

+0

感謝您的回覆。不,我不能放棄這項要求。上面的程序不是我正在使用的程序..我寫了一個類似的程序。請忽略我使用new還是malloc。 – Srikanth

回答

-2

您可以使用「sizeof()」運算符,它有助於確定指向數組的指針或指向變量的指針。當我們將一個數組名稱傳遞給「sizeof()」時,它給出了數組的總大小(以字節爲單位),而當我們傳遞一個普通指針時,它給出了地址長度。

+0

'sizeof(指針)'是相當無意義的,而且'sizeof'是實現定義的。你保證'sizeof(T [1])!= sizeof(T [2])'但不是'sizeof(T [1])!= sizeof(T)' – nijansen

相關問題