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

标签 c arrays string pointers

我正在研究 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/

相关文章:

c - C 中的运算符优先级(!= 和 |)

python - 打印时元素间距均匀

python - 从 .csv 文件中读取值并将它们转换为 float 组

java - 从位于另一个 ArrayList 中的 ArrayList 访问值

java - 如何避免在 java 中创建多个字符串对象?

php - preg_replace() 的意外结果

java - 以下代码的 java 等效代码是什么?

c++ - 关于使用 QThreadStorage 的线程安全

更改 Fork() 系统调用

python - 从其他 numpy 数组创建 numpy 数组