指向 int 数组的指针,从另一个方法传递和使用它
Pointer to int array, passing and using it from another method
我没有巩固我对C++数组的学习,也忘记了如何正确地做到这一点。我以前用字符数组做过,但它对 int 数组不起作用。
我声明一个新的空白 int 数组:
int myIntArray[10];
所以这应该是目前一个空数组,对吗?
然后我分配一个指向此数组的指针:
int *pMyArray = myIntArray
希望这是正确的。
然后我把它传递给其他地方的另一种方法:
anotherMethod(pMyArray)
我想将此指针分配给局部变量的地方(这是我真的不确定的地方):
anotherMethod(int *pMyArray){
int myLocalArray[];
myLocalArray[0] = *pMyArray;
}
我没有收到任何编译错误,但我不确定这在某些方面是正确的。任何和所有的帮助和建议都表示赞赏。
编辑:
我应该说出我想做的事情。
非常简单,我只想从另一种方法修改本地数组。
所以我有:
方法 1 将包含:
int myArray1[10] = {0};
方法 2 将把指针传递给 myArray:
然后一些代码来修改数组 myArray 中的变量。
int myIntArray[10];
这是一个未初始化的数组。它不一定包含0
。
int *pMyArray = myIntArray
好的,pMyArray
指向myIntArray
中的第一个元素。
anotherMethod(int *pMyArray){
int myLocalArray[10];
myLocalArray[0] = *pMyArray;
}
这不会将指针分配给任何内容,它将本地数组的第一个值分配给 pMyArray
指向的int
,请记住,该值是未初始化的。我在那里添加了10
,因为C++中不能有未知大小的数组。
要修改pMyArray
指向的内容,您需要通过引用传递它:
anotherMethod(int *& pMyArray)
此外,如果将其分配给自动存储中的某些值,则会导致未定义的行为,因为当函数退出时,该内存不再有效。
int myIntArray[10];
所以这应该是目前一个空数组,对吗?
否,这是一个由 10
个整数组成的数组,其中包含取决于存储规范的值。
如果在本地创建,则它具有随机垃圾值。
如果全局创建,则值初始化,对于 POD 初始化为零。
除此之外,您的方法只是将本地数组与你传递的数组的第一个 vale 一起分配。
你到底想做什么?我不确定。
int myIntArray[10]; So this should be an array of nulls for the moment correct?
不正确,它是一个由 10 个未初始化的整数组成的数组。
int *pMyArray = myIntArray Hopefully thats correct to there.
不太正确,pMyArray 是指向第一个元素 myIntArray[0] 的指针。
我想将此指针分配给局部变量的位置(这是其中 我真的不确定):
如果确实需要分配指针,则必须使用此代码
int *p_myLocalArray;
p_myLocalArray = pMyArray;
这里有一些错误。
首先,零(非空值)数组是使用初始值设定项语法实现的:
int myIntArray[10] = {0};
其次,int myLocalArray[];
的大小为 0。即使它的大小确实为 10,写myLocalArray[0] = *pMyArray;
也会将第一个 int 从 pMyArray
分配到 mLocalArray
中,这不是你的意思。
如果要分配数组的指针,则只需:
int *myLocalPointer;
myLocalPointer = pMyArray;
如果你想要数组的本地副本,你需要在本地复制它,为此你还需要大小和动态分配:
void anotherMethod(int *pMyArray, int size){
int *myLocalArray = (int *)malloc(size * sizeof(int));
memcpy(myLocalArray, pMyArray, size * sizeof(int));
...
free(myLocalArray);
}
- C++从另一个类访问公共静态向量的正确方法是什么
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 在另一个类视图中添加最多2个图表的正确方法是什么
- 检查哪个对象调用了另一个对象的对象方法
- 不能将方法返回的值用于另一个方法
- Qt将信号与另一个类方法连接
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 将一个类的方法指针存储到另一个类中
- 从另一个标头中的标头调用静态方法
- 无法"this"指针传递到另一个类并在 CPP 中调用该类的任何方法
- C++ |DLL / EXE - 如何从导出的类调用另一个类方法?
- 在销毁期间从另一个线程调用对象上调用方法是否未定义行为?
- 如果类"A"具有指向另一个类的指针,则"B" A 可以访问 B 类公共方法
- 如何在另一个类中使用类成员的正确方法?
- 重写另一个方法 [C++] 使用的超类回调函数
- 如何构造一个类型特征,可以判断一个类型的私有方法是否可以在另一个类型的构造函数中调用?
- 如何启用使用另一个类的静态方法的模板函数的自动推导,从而消除冗长的调用方代码
- 覆盖作为另一个类的好友的虚拟受保护方法
- 将vector<vector<double>>从x86平台中创建的一个进程发送到x64中构建的另一个进程的最快方法是什么
- 返回一个引用C++中另一个类对象的对象的有效方法