C / C ++数组与指针

时间:2017-10-03 21:08:45

标签: c arrays pointers

我设置了一个结构,其中包含一个数组 8位无符号整数。 在编译时,这个数组的大小是未知的 - 所以我想 我把它变成一个指针,然后再创建数组。 这是一个简单的例子:

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

struct value {
    uint8_t *data;
};

struct value values[10];

void fillIt(int whichOne)
{
    uint8_t tempArray[2];
    switch(whichOne)
    {
    case 0:
        tempArray[0]=10;
        tempArray[1]=20;
        break;
    case 1:
        tempArray[0]=30;
        tempArray[1]=40;
        break;
    default:
        break;
    }
    values[whichOne].data=tempArray;   
}

int main(void)
{
    fillIt(0);

    printf("values[0]  %u %u\n",values[0].data[0],values[0].data[1]);

    fillIt(1);
    printf("values[0]  %u %u\n",values[0].data[0],values[0].data[1]);
    printf("values[1]  %u %u\n",values[1].data[0],values[1].data[1]);

    return 0;
}

这将输出以下内容

values[0]  10 20
values[0]  30 40
values[1]  30 40

所以第二次调用fillIt()时,values [0] .data包含与之相同的数据 值[1] .data,因为两者都指向同一个临时数组,我猜。 如何创建个人&#39;我能指出的数组?

0 个答案:

没有答案