在检查一些现有代码时,我遇到了这一行:
char *s = malloc(SIZE);
scanf("%s", s);
char *y = s + strlen(s);
假设 scanf()
函数成功,向 char 数组添加一个整数有什么意义?
我的期望是得到一个包含 s
内容的新字符串和另一个带有整数 ASCII 码的字符(或至少是原始字符串)。
通过调试这段代码似乎在y=""
运行之后。
这种行为的解释是什么?
最佳答案
以数组索引操作而不是指针算术的形式来写可能更清楚。
int n;
char* y = s + n;
char* y = &s[n];
这两种形式是等价的。 s
是数组中第一个元素的地址。给它加一就可以得到数组中下一个元素的地址,依此类推。假设数组足够大,两个表达式的计算结果都是数组中第 n 个元素的地址。在这种情况下,y 指向字符串末尾的空终止符。
关于c - 将 int 与 char 数组相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046399/