关于函数的间接寻址问题
indirect addressing problem about functions
strcat(s,t) 将字符串t复制到s的末尾,以下为初始代码
void strcat(char s[], char t[])
{
int i, j;
i = 0;
j = 0;
while (s[++i] != '[=10=]');
while ((s[i++] = t[j++]) != '[=10=]');
}
#define MaxSize 100
int main()
{
char str1[MaxSize] = { 'a','b','c','d' };
char str2[MaxSize] = { 's','s' };
strcat(str1, str2);
printf("%s", str1);
return 0;
}
- 系统告诉我“strcat”之间的不同级别的间接寻址:
“void (char *,char *)”
和“char *(char *,const char *)”
。这是第一个为什么?
- 我从
void strcat(char s[], char t[])
更改为void* strcat(char s[], char t[])
后没有错误。所以这意味着我只能使用指针 void*
来 传递 str1 return 类型的地址 char*,但是我不能用strcat(char s[], char t[])
的参数s,t修改str1[=29的内容=].如果我认为是对的,那就是第二个 why
非常感谢你们,我应该更改函数名称。例如void strcat(char s[], char t[]) 应修改为 void mystrcat(char s[], char t[]) .
我想使用我自己的 strcat 版本,但忘了它违反了 C 语言规范。因为我写了代码 # include< string.h>。
在我意识到这个问题后, void strcat(char s[], char t[]) 和 void strcat(char s [], char t[]) 都可以.
strcat(s,t) 将字符串t复制到s的末尾,以下为初始代码
void strcat(char s[], char t[])
{
int i, j;
i = 0;
j = 0;
while (s[++i] != '[=10=]');
while ((s[i++] = t[j++]) != '[=10=]');
}
#define MaxSize 100
int main()
{
char str1[MaxSize] = { 'a','b','c','d' };
char str2[MaxSize] = { 's','s' };
strcat(str1, str2);
printf("%s", str1);
return 0;
}
- 系统告诉我“strcat”之间的不同级别的间接寻址:
“void (char *,char *)”
和“char *(char *,const char *)”
。这是第一个为什么? - 我从
void strcat(char s[], char t[])
更改为void* strcat(char s[], char t[])
后没有错误。所以这意味着我只能使用指针void*
来传递 str1return 类型的地址 char*,但是我不能用strcat(char s[], char t[])
的参数s,t修改str1[=29的内容=].如果我认为是对的,那就是第二个 why
非常感谢你们,我应该更改函数名称。例如void strcat(char s[], char t[]) 应修改为 void mystrcat(char s[], char t[]) .
我想使用我自己的 strcat 版本,但忘了它违反了 C 语言规范。因为我写了代码 # include< string.h>。
在我意识到这个问题后, void strcat(char s[], char t[]) 和 void strcat(char s [], char t[]) 都可以.