指向int数组的指针,从另一个方法传递和使用它

时间:2012-04-23 15:10:27

标签: c++

我没有巩固我对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中的变量。

4 个答案:

答案 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;