3

これは動作していない現在のコードです。j をポインタにする必要があります。

Substring(const char a[],int x,int y,char b[])
{
    int *j=0;
    for(x;x<=y&&a[x]!='\0';x++)
    { b[*j]=a[x];
         *j++;}
    b[*j] ='\0';
    return (b);

}

次のコードはうまく機能します。唯一の問題は、j がポインターではないことです。

Substring(const char a[],int x,int y,char b[])
    {
        int j=0;
        for(;x<=y&&a[x]!='\0';x++)
        { b[j]=a[x];
             j++;}
        b[j] ='\0';
        return (b);

    }

最初のコードを 2 番目のコードのように動作させたいのですが、これを行う方法についてのアイデアはありますか? コードはコンパイルおよび実行されますが、機能しなくなります。デバッグは役に立ちませんでした。複数の変数を使用することはできません - j.

4

2 に答える 2

7

大野

int *j = 0;j0(または)へのポインタを作成しますNULL

アプローチ1:

int jx = 0;
int *j = &jx;

アプローチ2:

    int *j = malloc(sizeof(int));
    *j = 0;
....
 ///don't forget to free(j);
于 2012-11-04T23:36:31.047 に答える
7

このような:

int real_j = 0;
int * j = &real_j;

// ...

++(*j);

もちろん、これはまったく無意味です。

于 2012-11-04T23:33:24.653 に答える