【发布时间】:2022-01-19 14:14:59
【问题描述】:
我有以下代码,应该填写整个 main 函数只是为了演示指针是如何工作的。
e 是 4 的整数,
f 是代码中的字符数组,
g 是指向字符串“ABC”的指针。
我对@987654324@ 和f 的工作原理有了很好的了解,但我对变量g 以及它是否实际上是指向字符串s 的指针感到好奇。
#include <stdio.h>
int foo(int a, char b[], char c, char *d)
{
}
int main(void)
{
char s[] = {"ABC"};
char *g = &s[2];
int e = 4;
char f[] = {'3', '7', '\0'};
int y = foo(e, f, g[2], g);
}
【问题讨论】:
-
你说
g是一个指向字符串"ABC"的指针。不是char *g = &s[2];,而是char *g = s;,其中数组s衰减指向一个指针。你所拥有的是一个指向字符串"C"的指针。 -
g指向C,数组s的第三个(记住数组是零索引的)元素。但绝不是指向整个字符串。由于字符串是空终止的,g本身也可以被视为字符串。 -
如果您将
g与puts(g)一起打印,您会发现它指向的位置。或者,您也可以在您最喜欢的调试器中查看该指针。 -
char s[] = "ABCDEFGHI"; char *g = &s[2]; ... foo(e, f, g[3], g);可能会更有趣。由于您当前代码中的g[2]是'\0',您可能会发现此修改很有趣。
标签: c string function pointers implicit-conversion