-4

对于以下代码片段:

 unsigned int *ptr[10];
 int a[10]={0,1,2,3,4,5,6,7,8,9};
 *ptr=a;
 printf("%u %u",ptr,a);

我检查了 codepad.org 和 ideone.com。在这两个编译器上,它显示 ptr 和 a 的不同值

4

4 回答 4

1

警告:

pointer targets in assignment differ in signedness
format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘unsigned int **’
format ‘%u’ expects type ‘unsigned int’, but argument 3 has type ‘int *’
于 2012-12-17T09:02:04.223 回答
0

这是一个指针数组

*ptr[10]

如果你想为此分配一个去:

(*ptr)[10]
于 2012-12-17T09:04:43.447 回答
0

uint *ptr[10]等效于uint **ptr并且分配与分配给数组内的第一个偏移量*ptr = a相同,它不会触及自身的值...ptr[0] = aaptrptr

您可能想使用其中之一:

ptr = &a;

// Or
printf("%u %u",ptr[0],a);

// Or
unsigned int *ptr;
ptr = a;
于 2012-12-17T09:05:12.020 回答
0

在指针上下文中使用时,指向数组ptr的开头ptr,而a指向a数组的开头。这是两个不同的数组,它们在内存中占据完全不同的位置。为什么它们会一样?

当然,打印指针值%u是一种犯罪行为。使用%p. 这%p就是为了。

于 2012-12-17T09:03:00.463 回答