如何解决将数据从数组引用到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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。