我是学生,是第一次学习指针。我的分配不允许使用字符串类,应该使用指针符号访问数组中的所有元素(无[])。

为什么我不能通过指针访问结构内部的数组?我的语法关闭了吗?

#include <iostream>

using namespace std;

struct person
{
    int favNums[4];
};

// Notation works here
void strCopy(char *from, char *to, int len)
{
    for (int i = 0; i < len; i++)
    {
        *(to + i) = *(from + i);
    }
}

// But doesn't work here
void sayNumsPointerNotation(person peep)
{
    for (int i = 0; i < 4; i++)
    {
        //cout << peep.*(favNums + i) << endl;
    }
}

// Would like to accomplish this.
void sayNums(person peep)
{
    for (int i = 0; i < 4; i++)
    {
        cout << peep.favNums[i] << endl;
    }
}

int main()
{
    // Array outside of struct
    char from[5] = "Word";
    char to[5];
    strCopy(from, to, 5);
    cout << to << endl << endl;

    // Array inside of struct non-pointer
    person peep;
    peep.favNums[0] = 0;
    peep.favNums[1] = 1;
    peep.favNums[2] = 2;
    peep.favNums[3] = 3;

    sayNums(peep);
    cout << endl;

    sayNumsPointerNotation(peep);
    cout << endl;
}

最佳答案

代替

cout << peep.*(favNums + i) << endl;


尝试这个:

cout << *(peep.favNums + i) << endl;

10-08 11:28