2013-07-30 148 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

相关问题