在 C 中将数据从一个数组引用到另一个数组

Reference data from a array to another array in C

我想在 C 代码中将新数组引用到另一个数组的地址,如下所示:

int main()
{
    int a[6] = {1,2,3,4,5,6};
    int b[6];
    unsigned long long int *c = &a[5];
    unsigned long long int *d = &b[5];
    int size = 6;
    for(;size>0;size--,c--,d--){
        *d = *c;
    }
    return 0;
}

但是我的代码不起作用。你能告诉我这段代码有什么问题吗?

你的指针的数据类型与数组的数据类型不匹配

这些声明

unsigned long long int *c = &a[5];
unsigned long long int *d = &b[5];

不正确,因为声明的对象具有 unsigned long long int * 类型,但由 int * 类型的表达式初始化。因此取消引用声明的指针你会得到意想不到的结果。

如果你想在 for 循环中使用指针算法,例如将第一个数组以相反的顺序复制到第二个数组,那么程序可以看下面的方式。

#include <stdio.h>

int main(void)
{
    enum { N = 6 };
    int a[N] = { 1, 2, 3, 4, 5, 6 };
    int b[N];
    
    for ( int * c = a + N, *d = b; c != a; )
    {
        *d++ = *--c;
    }
    
    for ( const int *d = b; d != b + N; ++d )
    {
        printf( "%d ", *d );
    }
    
    putchar ( '\n' );
    
    return 0;
}

程序输出为

6 5 4 3 2 1