69,373
社区成员
发帖
与我相关
我的任务
分享
char *function(void *a,int b){//大括号应该另起一行开头写(纯个人建议,可以无视)
//为什么 a 是 void* 呢?而不是 char* 呢? (这个不算问题)
int i=0;
char k[30]="hello world !";
while(*a&&i<b){ //1)对于 void* 来说, 判断 *a 是否等于 0 有意义么? 你应该是判断 k[i] 才对吧?
// 2) 还是之前那句, 大括号建议另起一行.
// 3) 建议加多几个空格和括号,看起来舒服很多的.比如: while(*a && (i < b))
*a++=k[i++] // 1) 缺少 ;
// 2) 程序段在开头没有对 a!=NULL进行判断,如果a==NULL,程序立即崩溃.
// (当然,这个可能也是你故意为之,如果是,当我没说.)
// 3) 假如你这个程序的意思是复制字符串的话,那么如果 b>30 怎么办?一大堆乱码了.
// 4) 这句语句,我个人建议还是分开几句来写,特别是初学者.一条语句中应该避免同时出现多个 ++
// 不然如果用错的话,错误很难找出来的.
}
a[i]='\0';
return k;//绝对不可以返回局部指针变量,所以,我觉得,你这里应该是 return a;
//不过,要注意, a 是 void* ,而你返回的类型是 char*
}
char *function(void *a,int b){//大括号应该另起一行开头写(纯个人建议,可以无视)
//为什么 a 是 void* 呢?而不是 char* 呢? (这个不算问题)
int i=0;
char k[30]="hello world !";
while(*a&&i<b){ //1)对于 void* 来说, 判断 *a 是否等于 0 有意义么? 你应该是判断 k[i] 才对吧?
// 2) 还是之前那句, 大括号建议另起一行.
// 3) 建议加多几个空格和括号,看起来舒服很多的.比如: while(*a && (i < b))
*a++=k[i++] // 1) 缺少 ;
// 2) 程序段在开头没有对 a!=NULL进行判断,如果a==NULL,程序立即崩溃.
// (当然,这个可能也是你故意为之,如果是,当我没说.)
// 3) 假如你这个程序的意思是复制字符串的话,那么如果 b>30 怎么办?一大堆乱码了.
// 4) 这句语句,我个人建议还是分开几句来写,特别是初学者.一条语句中应该避免同时出现多个 ++
// 不然如果用错的话,错误很难找出来的.
}
a[i]='\0';
return k;//绝对不可以返回局部指针变量,所以,我觉得,你这里应该是 return a;
//不过,要注意, a 是 void* ,而你返回的类型是 char*
}