使用char数组求和

Nav*_*eva 0 c arrays string sum

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

char *s = malloc(SIZE);
scanf("%s", s);
char *y = s + strlen(s);
Run Code Online (Sandbox Code Playgroud)

假设scanf()函数成功,将一个整数添加到char数组的含义是什么?

我的期望是获得一个新的字符串,其中包含s整数的ASCII代码(或至少是原始字符串)的内容和另一个字符.

通过调试此代码,似乎y=""在操作之后.

这种行为有什么解释?

Tim*_*all 5

以数组索引操作而不是指针算法的形式编写它可能更清楚.

int n;
char* y = s + n;
char* y = &s[n];
Run Code Online (Sandbox Code Playgroud)

这两种形式是等价的.s是数组中第一个元素的地址.添加一个可以获得数组中下一个元素的地址,依此类推.假设数组足够大,两个表达式都会计算出数组中第n个元素的地址.在这种情况下,y指向字符串末尾的空终止符.