我在使用函数执行任务时遇到了问题。我是否需要将指针传递给角色以执行任务。我使用了以下代码
#include <stdio.h>
char* change(char c)
{
char s[2];
s[0]=c;
s[1]='\0';
return s;
}
int main()
{
char t='o';
char* kk;
kk=change(t);
printf("\n%s",kk);
return 0;
}
由于
答案 0 :(得分:2)
如果不进行复制,则无法从函数返回指向局部变量的指针。在C
中执行所需操作的两种方法是
malloc
或等效值动态分配返回值,并要求调用者free
生成的字符串。这是第一种方法:
int change(char c, char* res, int len) {
if (len < 2) return -1; // Invalid parameters
res[0]=c;
res[1]='\0';
return 1;
}
这是第二种方法:
char* change(char c) {
char *res = malloc(2);
res[0]=c;
res[1]='\0';
return res;
}
答案 1 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
char* change1(char c){
static char s[2];
s[0]=c;
return s;
}
char* change2(char c){
char *s = malloc(2);
s[0]=c;
s[1]='\0';
return s;
}
char* change3(char c, char *s){
s[0]=c;
s[1]='\0';
return s;
}
int main() {
char t='o';
char* kk;
kk=change1(t);
printf("%s\n", kk);
kk=change2(t);
printf("%s\n", kk);
free(kk);
char s[2];
kk = change3(t, s);
printf("%s\n", kk);
return 0;
}
答案 2 :(得分:0)
你可以改变
char s[2];
到
char *s; s = malloc(2);
你的程序应该可以正常工作。