请问一下每一步是什么意思求指教指教
这个程序主要是找出字符数组s1与字符数组s2不同的字符。
具体注释如下:
#include <stdio.h> // printf函数的头文件
int main(void){
char s1[256]; // 定义存储第一个字符串的字符数组
char s2[256]; // 定义存储第二个字符串的字符数组
gets(s1); // 从输入获取第一个字符串
// printf("s1=%s\n",s1);
gets(s2); // 从输入获取第二个字符串
// printf("s2=%s\n",s2);
int i,j,k;
for(i=0;s1[i]!='\0';i++){ // 遍历字符数组s1每一个字符
for(j=0;s2[j]!='\0';j++){ // 遍历字符数组s2每一个字符
// 如果字符数组s1当前位置的字符值 等于 字符数组s2当前位置的 字符值 ,则将s1此位置的字符改为 '+' 字符
// 以寻找出 s1与s2不同的字符
if(s1[i]==s2[j]){
s1[i]='+';
// printf("s1[%d]=%c,s2[%d]=%c\n",i,s1[i],j,s2[j]);
}
}
}
for(k=0;s1[k]!='\0';k++){ // 遍历字符数组s1 ,打印其不为'+'字符的字符,即打印与字符数组s2不同的字符
// printf("\ns1[%d]=%c,%d\n",k,s1[k],s1[k]);
if(s1[k]!='+'){
printf("%c",s1[k]);
}
}
//printf("s1[%d]=%c,%d\n",k,s1[k],s1[k]);
// 这个是打印字符数组s1 第k+1个字符位置的值,其为字符数组空字符后面一个字符,此处应该无须打印
printf("%c",s1[k+1]);
//printf("s1[%d]=%c,%d\n",k+1,s1[k+1],s1[k+1]);
return 0;
}
这里不得不重新说明一下函数,我们知道当我们创建一个函数时,会有一个函数名,这个函数名实际上是一个指针变量,指向函数体,函数体存储在代码段(Text Segment)中,指针变量存储在栈中。即创建一个函数实际上就创建了一个指向函数体的指针变量。
那么当我们创建一个函数指针时,理应存在这样一个示意图:
这里可能会有同学要问这样一个问题: