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