当char期望时,按值传递char数组

时间:2012-10-31 06:13:10

标签: c

void func(char a, int num)
{
    printf("%c",a);
}

int main()
{
     func("a", 6); //not func('a',6);
     printf("\n");
     func("b", 2); //not func('b',6);
}

我知道我传递了一个带有空字符\0的a和b的char数组。 有人可以如何打印字符$&

2 个答案:

答案 0 :(得分:4)

最终可能会打印任何内容,可能是"a""b"的地址的一部分与$&的ascii代码匹配。

答案 1 :(得分:2)

您正在将指针传递给文字字符串,但func需要一个字符。将其更改为接收数组:

void func(char *a, int num)
{
    printf("%c",a[0]); // also note that to print a char you need to
                       // 'select' a char from the array
}

否则,您最终将打印到一个字符,该字符是a的地址作为第一个字节的ascii表示。