C通过指针将数组传递给函数

时间:2013-10-29 15:34:54

标签: c arrays pointers

我是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.
}

2 个答案:

答案 0 :(得分:1)

数组总是由C中的指针传递,而不是通过值传递(复制)

所以

int runCommand (char x[24]);

等同于

int runCommand (char *x);

答案 1 :(得分: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));
}