c - 将 int 与 char 数组相加

标签 c arrays string sum

在检查一些现有代码时,我遇到了这一行:

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/

相关文章:

java - 如何按顺序统计字符串中的字符?

c - 如何迭代获取特定的结构元素并将它们存储到 C 中的二维数组中?

c - 找到所有大小 s(元素数量)的不同矩阵(N)的数量?

c - 字符设备驱动程序中的套接字通信

c - C 结构数组

c++ - 数组初始化函数 : Passing Array as Pointer: C++

c - 有读写二进制文件格式(PE 和 ELF)的库吗?

c - 从 ncurses 窗口中的特定坐标获取字符

java - java中只打印重复的单词

c - C 中的安全函数是否比不安全的函数更快,反之亦然?