【发布时间】:2017-12-29 14:15:12
【问题描述】:
我正在尝试做以下事情:
#include <stdio.h>
typedef unsigned char Set[128];
Set A; //Global variable
void main()
{
A[0] = 1;
A[1] = 2;
A[2] = 3;
printf("%x, %x, %x\n", A, &A, &A[0]);
printf("%u, %u, %u\n", A[0], A[1], A[2]);
Set *p;
p = A; //Same result with: p = &A;
printf("%x, %x, %x\n", p, &p, &p[0]);
printf("%u, %u, %u\n", p[0], p[1], p[2]);
}
第一次和第三次打印都很好——我可以看到两个变量的地址,对于“p”,它指向的地址。 我希望'p'指向'A',这样我就可以通过'p'访问'A'数组中的值,但它不起作用-第四次打印的值不是第二,它不打印数组的值。 如何创建指向“设置”变量类型的指针?
【问题讨论】:
-
你为什么要创建一个令你的例子复杂化的 typedef ?你所有的 printf 调用都是未定义的行为。
-
p = A无效。假设警告级别足够高,编译器会向您提及它。认真对待编译器的警告。
标签: c arrays pointers types typedef