将字符串文字传递给C中的函数

时间:2013-01-01 23:24:04

标签: c arrays pointers

将字符串文字(例如“ABC”)分配给char a [] ex。

char a[] = "ABC";

它具有做

的效果
char a[4] = {'A','B','C','0'};

将它传递给函数参数

时,同样适用

离。

int f(char a[]);

VS

int f(char *a);

2 个答案:

答案 0 :(得分:5)

  

将它传递给函数参数

时,同样适用

没有;一般来说,在C中你不能直接按值传递数组;函数的每个数组参数实际上都被编译器解释为指针参数,即当你写

int f(char a[]);

编译器看到了

int f(char *a);

(即使您指定了数组的尺寸,也是如此)


顺便说一下,

  

它具有做

的效果
char a[3] = {'A','B','C"};

实际上,它具有以下效果:

char a[4] = {'A','B','C', 0};

答案 1 :(得分:2)

不,因为这两个函数声明都是相同的。两者都声明了一个带有char指针的函数,在这两种情况下,参数都会被一个指向字符串文字的第一个元素的指针初始化。