如何在函数内部递增 "char *" 而不返回它?
How to increment "char *" inside a function without returning it?
我有这样的东西(简体):
void count(char *fmt)
{
while (*fmt != 'i')
{
fmt++;
}
printf("%c %p\n", *fmt, fmt);
}
int main(void)
{
char *a = "do something";
char *format;
format = a;
printf("%c %p\n", *format, format);
count(format);
printf("%c %p", *format, format);
}
给出:
d 0x100003f8b
i 0x100003f94
d 0x100003f8b%
让它工作的唯一方法是:
char *count(char *fmt)
{
while (*fmt != 'i')
{
fmt++;
}
printf("%c %p\n", *fmt, fmt);
return (fmt);
}
int main(void)
{
char *a = "do something";
char *format;
format = a;
printf("%c %p\n", *format, format);
format = count(format);
printf("%c %p", *format, format);
}
但是我真的不想要这个,因为我的计数函数已经返回了我需要的值。如何在不返回函数的情况下增加函数内的格式?
通过引用将指针传递给函数。
在 C 中,按引用传递意味着通过指向对象的指针间接传递对象。因此取消引用指针您将可以直接访问原始对象并可以更改它。
例如
void count(char **fmt)
{
while ( **fmt != 'i')
{
++*fmt;
}
printf("%c %p\n", **fmt, *fmt);
}
并像
那样调用函数
count( &format);
我有这样的东西(简体):
void count(char *fmt)
{
while (*fmt != 'i')
{
fmt++;
}
printf("%c %p\n", *fmt, fmt);
}
int main(void)
{
char *a = "do something";
char *format;
format = a;
printf("%c %p\n", *format, format);
count(format);
printf("%c %p", *format, format);
}
给出:
d 0x100003f8b
i 0x100003f94
d 0x100003f8b%
让它工作的唯一方法是:
char *count(char *fmt)
{
while (*fmt != 'i')
{
fmt++;
}
printf("%c %p\n", *fmt, fmt);
return (fmt);
}
int main(void)
{
char *a = "do something";
char *format;
format = a;
printf("%c %p\n", *format, format);
format = count(format);
printf("%c %p", *format, format);
}
但是我真的不想要这个,因为我的计数函数已经返回了我需要的值。如何在不返回函数的情况下增加函数内的格式?
通过引用将指针传递给函数。 在 C 中,按引用传递意味着通过指向对象的指针间接传递对象。因此取消引用指针您将可以直接访问原始对象并可以更改它。
例如
void count(char **fmt)
{
while ( **fmt != 'i')
{
++*fmt;
}
printf("%c %p\n", **fmt, *fmt);
}
并像
那样调用函数count( &format);