姬世鹏 发表于 2019-12-18 16:29:20

如何定义一个可改动的字符串函数

#include <stdio.h>

char * m(int num[],int i);
char * m(int num[],int i)//将整形数组中的前i个数据转化为字符型
{
        int j = 0;
        for(;i>0;i--)
        {
                m = (char)num;//提示这里的m为常数型,只能读取,所以该如何定义函数,使得字符串可以修改?
                j++;
        }
        return m;
}
int main(void)
{
        int array = {48,49,50,51};
        int i = 5;
        printf("%s",m(array,i));
       
        return 0;
}//怎么定义才能使它可以改动啊!

Croper 发表于 2019-12-18 16:29:21

你问问题首先是要别人看懂。
不知所云的问题真的很让人恼火。
另外,我到现在仍然不知道你”加上以后“,代码改成什么样了。

#define _Out_并没有什么实际意义,提醒这个位置的参数是作为返回值的而已。你可以把_Out_当作注释。

直接给完整代码吧#include <stdio.h>
#define _Out_

char * m(int num[], int i, char _Out_ ret[])
{
    int j = 0;
    for (j=0;j<i;++j)
    {
      ret = (char)num;
    }
        return ret;
}

int main(void)
{
    int array = {48,49,50,51};
    char ret;
    int i = 5;
    printf("%s",m(array,i,ret));
      
    return 0;
}

Croper 发表于 2019-12-18 17:13:06

。。。把函数名当返回值使,这是vb的用法把。。
C里没这种用法,你把m定义成函数,那么它就是个函数,跟返回值没有关系。

另外,C里尽量不要直接返回字符串指针,如果一定要返回,那么一定要明确指针指向的空间是新申请的还是本来就存在的。

#define _Out_   // 表示此形参作为返回值使用
char * m(int num[], int i, char _Out_ ret[])//将整形数组中的前i个数据转化为字符型
{
                int j = 0;
                for (j=0;j<i;++j)
                {
                        ret = (char)num;//提示这里的m为常数型,只能读取,所以该如何定义函数,使得字符串可以修改?
                }
                return ret;
}

姬世鹏 发表于 2019-12-18 17:18:15

Croper 发表于 2019-12-18 17:13
。。。把函数名当返回值使,这是vb的用法把。。
C里没这种用法,你把m定义成函数,那么它就是个函数,跟返 ...

我的错,忘记了,但加上以后报错内容没有改变,还是不知道怎么定义可修改的字符串函数

Croper 发表于 2019-12-18 17:57:54

首先,你的问的是个什么鬼?
什么叫“可修改的字符串函数”,什么是函数,什么是变量你搞清了么?
光看问题,我可以猜到函数指针那儿去,可以猜到虚函数那儿去,甚至可以猜到反射那儿去。
我完全是看你的代码才大概猜到你想要把m作为一个字符数组然后想要改变它的值
没有代码谁知道你说的是个什么鬼。

然后,我给你打的代码你也完全没看的样子,
然后就是“加上以后”,加上什么以后?变量申明么?
非要别人来猜你的代码么?

姬世鹏 发表于 2019-12-18 22:20:26

Croper 发表于 2019-12-18 17:57
首先,你的问的是个什么鬼?
什么叫“可修改的字符串函数”,什么是函数,什么是变量你搞清了么?
光看问 ...

真的对不起,我这次仔细看了但是
#define _Out_   // 表示此形参作为返回值使用(这里不太懂,如果小甲鱼会讲的话,就不用麻烦你再讲了)
真的很不好意思,以后一定更认真的阅读大家的答案。
页: [1]
查看完整版本: 如何定义一个可改动的字符串函数