我有 2 个程序,分别是主要程序和子程序。主呼子。我在主进程中创建了如下所示的 key
static const unsigned char key[] = {4,1,8,9,1,61,64,220};
我正在展示它
printf("\nkey:\t %X\n", key);
结果是:4018EF
子进程
static const unsigned char key[] = {4,1,8,9,1,61,64,220};
我正在展示它
printf("\nkey:\t %X\n", key);
结果是:401061
为什么结果不同?
实际上,我将尝试从子元素中添加最后一个元素,例如 220,然后比较两个键。我的意思是 main 将是 {4,1,8,9,1,61,64,220} 而 child 将是 {4,1,8,9,1,61,64}。在 for 循环中,我将尝试添加最后一部分。如果它命中,那么它会说“OK Equals”。 (我试过但失败了)现在我很困惑,因为结果不同。请帮助我。
最佳答案
它们是不同的,因为它们是static
,所以每个 C 文件都有自己不同的数组。
您(无效地)将地址打印为无符号数(打印地址的正确方法是使用 %p
并转换为 void *
),所以您会看到这两个数组位于不同的位置。
您不能“添加”到常量数组。您可以为另一个元素保留空间并将其设置为某个稍后替换的“未使用”值,但当然您不能这样做并保留它 const
因为您将不得不编写为了这样做到数组。
关于c - 向 C 中的 const 数组添加新元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20657368/