-1

私は C とポインターが初めてで、文字の配列自体を渡す代わりに配列ポインターを関数に渡すことができるかどうかを知りたいです。コードからスニペットを投稿しています。

char ipAddress[24];
int i, j;
for (i = 12; i <= 13; i++)
{
    for (j = 1; j <= 254; j++)
    {
        sprintf(ipAddress,"192.168.%d.%d",i,j);
        runCommand(ipAddress);
    }
}

// ...

int runCommand (char x[24])
{
    // Do stuff.
}
4

2 に答える 2

0

はい、配列へのポインタを関数に渡すことは可能です。いいえ、それはおそらくあなたが望むものではありません。

int runCommand(char (*x)[24])
{
    if ((*x)[0] == '\0')  // Option 1
        return -1;
    if (x[0][0] == '\0')  // Option 2: equivalent to option 1.
        return -1;
    ...
}

void alternative(void)
{
    char y[24] = "Samizdat";
    printf("%d\n", runCommand(&y));
}

つまりx、24 文字の配列へのポインタです。ただし、十分に注意してください。一般に、ポインターを配列に渡すことは望ましくありません。ポインタを渡したいだけです。

int runCommand(char x[24])  // Or: char *x
{
    if (x[0] == '\0')  // Option 1
        return -1;
    ...
}

void alternative(void)
{
    char y[24] = "Samizdat";
    printf("%d\n", runCommand(y));
}
于 2013-10-29T15:43:50.683 に答える