+ -
当前位置:首页 → 问答吧 → 以下的c++ progamme code, 有2个问题求解答

以下的c++ progamme code, 有2个问题求解答

时间:2013-05-22

来源:互联网

#include<iostream>
using namespace std;

void mdyArray(int arrElem[], int nElement)
{
    int *iPtr, iZ, iX;
    iPtr = arrElem;
    int test = 2;
    do{
        iX = test;
        if(iX < nElement)
            iZ=3;
        else
            iZ=9;
        if(iX>= nElement)
            iX = iX %(nElement - 1);
        *(iPtr + iX)= *(iPtr + iX) + iZ;
        test+=3;
    }while(test< 2*nElement - 1);
}
int main()
{
    const int MAX_ELEMENT = 14;
    int elemA[MAX_ELEMENT] = {22,23,25,26,27,28,29,
        41,42,43,44,45,46,48};
    mdyArray(elemA, MAX_ELEMENT);
    for(int i = 2; i < MAX_ELEMENT - 3; i++)
        cout<<elemA<< ":>";
    cout<<endl;
    return 0;
}

请问在do-while loop入面的iPtr 一开始的数值是多少?
在完成第1次do-while loop 后, iPtr的数值有改变吗?
Thank you for help

作者: C.kahei   发布时间: 2013-05-22

Run一次不可以吗...???
指向阵列第一个元素...没有改变



作者: cheng_chai_fung   发布时间: 2013-05-22

引用:
原帖由 cheng_chai_fung 於 2013-5-22 12:20 PM 发表
Run一次不可以吗...???
指向阵列第一个元素...没有改变



run完出黎个结果同我谂既唔一样...
所以想问下一开始 iPtr系咪即系elemA[0]?

作者: C.kahei   发布时间: 2013-05-22

其实呢...我一早大概会觉得...你说的"iPtr 一开始的数值"是iPtr指向的记忆体里的资料

这个都是一般新手都搞不清的概念...C++是一个十分著重pointer...memory...data相互关系的语言
所以要分清
iPtr里保存的是某一数字...数字代表某一memory的address
至於address所指的那里...内里保存的内容才是我们加载到memory的"data"

而且, iPtr是int*的类型的话...
*(iPtr + iX)应该写成iPtr[iX]会比较易理解

[ 本帖最后由 cheng_chai_fung 於 2013-5-22 08:16 PM 编辑 ]

作者: cheng_chai_fung   发布时间: 2013-05-22

引用:
原帖由 cheng_chai_fung 於 2013-5-22 08:14 PM 发表
其实呢...我一早大概会觉得...你说的"iPtr 一开始的数值"是iPtr指向的记忆体里的资料

这个都是一般新手都搞不清的概念...C++是一个十分著重pointer...memory...data相互关系的语言
所以要分清
iPtr里保存的是某 ...
其实呢题系一条题目...佢问呢个programme会出咩result..

所以我冇改到入面d野...不过我已经知道自己错咩了..

我之前挂住望function入面个do-while loop..冇留意main function入面个for-loop..

所以错左个result...而家已经明白了..

作者: C.kahei   发布时间: 2013-05-22

热门下载

更多