指向数组的指针,然后获取完整的数组c++
pointer to array and then getting full array c++
编辑(重制版):以下是我要做的:
char* someArray = new char[someIntVariable];
然后在数组上循环并使用自定义函数来获取另一个数组的内容(这就是问题所在):
char* temp = someFunc(someArray, someIntVariable); //someFunc is a char* returning function
for(int i = 0; i < someIntVariable; i++){
someArray[i] = temp[i] //temp[i] is where the problem lies. It returns something like: /213
}
文本版本:我试图获得一个指向char数组的指针,以返回所有数组内容(只使用一个指针),并在之前创建的数组上循环,填充它的空格,或者以某种方式为它分配一个赋值。
希望这是可以理解的。
"someFunc":
char* convertCharArr(char* _inputArr, int arrSize){
char *inputArr = new char[arrSize];
std::memmove(inputArr, _inputArr, sizeof(*inputArr));
static char *resizedUsrInptAns = new char[arrSize];
for(int i = 0; i < sizeof(inputArr)/sizeof(inputArr[0]); i++){
if(i == arrSize + 1){
break;
}
resizedUsrInptAns[i] = inputArr[i];
}
return resizedUsrInptAns;
}
ptr2
和ptr1
是等价的,所以我将忽略ptr2
来获得答案。
如果你想克隆一个未知大小的char数组,你必须使用动态内存分配:
char * p = malloc(strlen(ptr1) + 1);
strcpy(p, ptr1);
// ...
free(p);
不能将指针分配给数组,这在c中是不可能的。只能相反,将数组分配给指针。
您必须创建一个新的数组(具有动态分配),并将数据复制到该数组中。
示例
char* pChar = GetArrayPointer();
char* pNewArrayPointer = (char*)malloc(strlen(pChar) + 1);
strcpy(pNewArrayPointer, pChar);
编辑
1) 您不必复制_inputArr
,因为您不需要在converCharArr()
中向其写入数据。
2) 为什么要使用sizeof(inputArr)/sizeof(inputArr[0])
,它不起作用,因为inputArr是一个指针(指针和数组之间有一些区别:))。您应该使用arrSize
。
数组和指针的差异:http://www.geeksforgeeks.org/g-fact-5/
在您的示例中,prt1和ptr2都指向同一个字符。使用cout可以获得与arr1相同的ptr1/ptr2效果。
所以,下面所有的都会打印相同的东西:-
cout << arr1;
cout << ptr1;
cout << ptr2;
如果您想使用ptr2创建与arr1内容相同的新数组,那么
ptr2 = malloc(strlen(ptr1) + 1);
strcpy(ptr2, ptr1);
这可能会有所帮助
链接:http://ideone.com/Nwqd22
#include <iostream>
using namespace std;
char* fun(){
char * returnValue = "String";
return returnValue;
}
int main() {
char * firstVariable;
firstVariable = fun();
cout << firstVariable;
return 0;
}
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '