我没有巩固我对C ++数组的学习,忘记了如何正确地做到这一点。我以前用char数组完成了它,但它对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中的变量。
答案 0 :(得分:1)
int myIntArray[10];
所以这应该是一个空数组,目前正确吗?
不,这是一个包含值的10
整数数组,具体取决于存储规范
如果在本地创建,它具有随机垃圾值
如果全局创建,则初始化值为POD初始化为零。
除此之外,您的方法只是为本地数组指定您传递的数组的第一个值 你准备做什么?我不确定。
答案 1 :(得分:1)
int myIntArray[10];
这是一个未初始化的数组。它不一定包含0
。
int *pMyArray = myIntArray
好的,pMyArray
指向myIntArray
中的第一个元素。
anotherMethod(int *pMyArray){
int myLocalArray[10];
myLocalArray[0] = *pMyArray;
}
这不会将指针指向任何东西,它会将本地数组的第一个值分配给int
所指向的pMyArray
,记住,它是未初始化的。我在那里添加了10
,因为你不能在C ++中拥有一个未知大小的数组。
要修改pMyArray
指向的内容,您需要通过引用传递它:
anotherMethod(int *& pMyArray)
此外,如果将其分配给自动存储中的某些值,则会导致未定义的行为,因为当该函数退出时该内存不再有效。
答案 2 :(得分:1)
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;
答案 3 :(得分:1)
这里有一些错误。
首先,使用初始化语法实现零(非空)数组:
int myIntArray[10] = {0};
其次,int myLocalArray[];
的大小为0.即使它的大小确实为10,编写myLocalArray[0] = *pMyArray;
也会将pMyArray
中的第一个int分配到{{ 1}},这不是你的意思。
如果要分配数组的指针,则只需:
mLocalArray
如果你想要一个数组的本地副本,你需要在本地复制它,为此你还需要大小和动态分配:
int *myLocalPointer;
myLocalPointer = pMyArray;