在C语言中将字符串文本传递给函数
将字符串文字(如ABC)指定给char a[]ex时在C语言中将字符串文本传递给函数,c,arrays,pointers,C,Arrays,Pointers,将字符串文字(如ABC)指定给char a[]ex时 char a[] = "ABC"; 它具有做某事的效果 char a[4] = {'A','B','C','0'}; char a[3] = {'A','B','C"}; 当您将其传递给函数参数时,是否也适用同样的情况 前 vs 否,因为这两个函数声明是相同的。两者都声明了一个函数,该函数使用指向char的指针,并且在这两种情况下,参数都使用指向字符串文本的第一个元素的指针进行初始化 当您将其传递给函数参数时,是否也适用同样的
char a[] = "ABC";
它具有做某事的效果
char a[4] = {'A','B','C','0'};
char a[3] = {'A','B','C"};
当您将其传递给函数参数时,是否也适用同样的情况
前
vs
否,因为这两个函数声明是相同的。两者都声明了一个函数,该函数使用指向char的指针,并且在这两种情况下,参数都使用指向字符串文本的第一个元素的指针进行初始化 当您将其传递给函数参数时,是否也适用同样的情况 没有;一般来说,在C语言中,不能直接按值传递数组;编译器实际上会将函数的每个数组参数解释为指针参数,即在编写时
int f(char a[]);
编译器看到
int f(char *a);
即使指定了数组的维度,也同样适用
顺便说一下
它具有做某事的效果
char a[4] = {'A','B','C','0'};
char a[3] = {'A','B','C"};
实际上,它的作用是:
char a[4] = {'A','B','C', 0};
ABC是字符[4]而不是字符[3]您指的是字符串,不是字符串文字。