小编Mat*_*nek的帖子

指向静态定义的二维数组的指针

代码(使用编译gcc -std=c99)......

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

typedef int mytype[8][8];

int main(void)
{
    mytype CB;
    for (int r=0; r<8; r++) {
        for (int c=0; c<8; c++) {
            CB[r][c] = 5;
        }
    }

    mytype *CB2 = &CB;

    for (int r=0; r<8; r++) {
        for (int c=0; c<8; c++) {
            printf("%d ",*CB2[r][c]);
        }
        printf("\n");
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

打印stdout错误的数据(只有第一行的数据是正确的),这些数据都是必须的5.我发现,其他数组项的指针在内存中有所改变,但我不明白为什么.

我希望,目的很明显:CB在第一个循环中设置数组的内容,然后在第二个循环中将其打印出来.这只是模型 - 指针的东西就在那里,因为我需要它.

我究竟做错了什么?

c arrays pointers c99 multidimensional-array

1
推荐指数
1
解决办法
121
查看次数

标签 统计

arrays ×1

c ×1

c99 ×1

multidimensional-array ×1

pointers ×1