gpt4 book ai didi

c - 如何声明指向 char * 数组的指针数组

转载 作者:行者123 更新时间:2023-11-30 20:57:52 25 4
gpt4 key购买 nike

问题是访问指针数组的每个地址会将我的数据合并到后续数据

Code in the image is merging my data

最佳答案

正如备注中所述,您的数组不会以空字符终止,这就是为什么 printf 在它们后面继续的原因。

你得到这个结果是因为你的数组被编译器一个接一个地放入内存中,最后由于其他原因出现了一个空字符

所以最小的改变是

unsigned char mydata1[] = {0x41,0x42,0x43, 0};
unsigned char mydata2[] = {0x44,0x45,0x46, 0};
unsigned char mydata3[] = {0x47,0x48,0x49,0x4A, 0}

但是这种方法假设你的编译器使用 ASCII 代码,而这是不可读的,最好这样做

unsigned char mydata1[] = {'A', 'B', 'C', 0};
unsigned char mydata2[] = {'D', 'E', 'F', 0};
unsigned char mydata3[] = {'G','H','I','J', 0};

或更简单:

unsigned char mydata1[] = "ABC";
unsigned char mydata2[] = "DEF";
unsigned char mydata3[] = "GHIJ";
<小时/>

除此之外

  • 正在做for(i = 0; i < 3; i++)危险,因为如果你修改charPtr中的元素数量,你还需要修改for,一种方法是添加一个NULL指针标记指针列表的末尾并迭代到 NULL 指针,另一种方法是迭代 while i < (sizeof(charPtr)/sizeof(charPtr[0]))
  • 最好不要使用 int 来输入 i,而是 size_t因为这是索引的自然类型

关于c - 如何声明指向 char * 数组的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56091987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com