c - 向 C 中的 const 数组添加新元素

标签 c arrays eclipse parent-child strcat

我有 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/

相关文章:

c - Eclipse 中的警告

c - 为什么我的程序无法识别另一个命令?

c - 如何计算字符串中每个单词的出现次数?

java - 生成数字作为暴力应用程序的一部分

javascript - 将数组放入 JavaScript

C语言-运算符替换多个数组元素而不是一个

java - 更改JSP文件名时还需要更改什么

c# - 编码(marshal)包含可变长度数组的 C 结构

c - Flash下载代码到STM32F4单片机;如何删除下载的代码?

c++ - Eclipse 显示错误,但 gcc 编译正常