c语言 一句话看不懂

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:27:45
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{

static char s1[10],s2[10],s3[20];
int n,i;
printf("input s1\n");
gets(s1);
printf("input s2\n");
gets(s2);
printf("input n\n");
scanf("%d",&n);
for (i=0;i<n;i++)
s3[i]=s1[i];
strcat(s3,s2);
strcat(s3,&s1[n]); //这句话什么意思啊??
printf("%s\n",s3);
return 0;
}

&s1[n] 就是 表示第n个字符的地址
这里你可以理解为 是从第n个字符(数组变量的下标是 n-1)后开始的一个字符串 与 s3 进行 “stact”

比如你的s1 指向 abcde,
而这句话修改成 &s1[2}; 则把 cde这个字符串的地址拿来“stract"

strcat(s3,&s1[n]);<=>strcat(s3,s1+n); here
回答者:bonboncat -,他的答案若能理解,最好了。

&s1[n] 就是 表示第n个字符的地址
这里你可以理解为 是从第n个字符后开始的一个字符串

strcat(s3,&s1[n]);<=>strcat(s3,s1+n); here

在这里要理解字符数组名代表的是首地址..