我是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.
}
答案 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));
}