gpt4 book ai didi

c - 如何使用 "++"操作来增加C中结构中char数组的指针?

转载 作者:太空宇宙 更新时间:2023-11-04 01:20:21 25 4
gpt4 key购买 nike

我正在研究 C 中的指针,我有一个关于如何在结构中的 char 数组中使用++ 运算符的问题。

这是我的结构:

typedef struct{
char firstname[32];
char lastname[32];
} person;

另外,这是我比较两个人名字的函数:

int compare_firstname(const person* first, const person* second)
{
while(first->firstname != '\0' || second->firstname != '\0')
{
/**
Do something awesome!
*/
++first->firstname; // here is my problem
++second->firstname;// here is my problem
}
}

我想访问这两个不带“[]”的字符数组的元素,以便更好地理解指针。我是否将 const char* 设置为局部变量?如果是这样,你能解释一下原因吗?

谢谢!

最佳答案

那些不是您创建的指针。它们是数组。要创建一个在函数中相当于数组的指针,您应该执行以下操作:

//For heap allocation
char *point = malloc(sizeof(char)*32));

//For stack allocation
char ary[32];
char *point = &ary;

从那里开始,递增指针将一次沿着内存地址移动它。但是,在比较字符时,就像您在此处所做的那样:

first->firstname != '\0'

确保取消引用。如果不这样做,您会将内存地址与“\0”的字符代码进行比较。

因此,该行基本上是:

*first->firstname != '\0'

不过,请确保创建一个指向每个字符串的第一个内存地址的新指针。您不想修改数据结构中的那个。

关于c - 如何使用 "++"操作来增加C中结构中char数组的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45220880/

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