如果你有一个简单的函数,例如int open(const char *path, int oflags);
,你可以直接将字符串作为*path
传递,例如"filename.txt
。您也可以传递&foo
(这是一个地址,在这种情况下可能没有任何意义)。您甚至可以在其中放置一个普通指针。
所以我的问题是,实际上是一个地址,当你有一个指针作为参数或者只是一些适合参数的数据时(在这种情况下是const char
)。我想知道因为你可以毫无问题地直接传递ascii。
THX。
答案 0 :(得分:2)
它需要一个指针。字符串常量,例如"filename.txt"
,实际上有一个指针值:创建一个数组来保存字符串,表达式的值是该数组的地址,即指向它的指针。
答案 1 :(得分:-1)
您的示例案例有效,因为在C中,指向数组的指针指向数组的第一个元素。例如,在此代码段中
int arr [3] = {1,2,3};
int sum;
int SumOfArrayElements(int * a)
{
/ *
计算总和的代码
* /
}
sum = SumOfArrayElements(arr);
arr
是指向数组的指针,指向arr[0]
。
C中的字符串是字符数组(即字符串和字符数组之间没有区别)。因此,当您传递"filename.txt"
时,编译器会将其读作字符数组指针,该指针指向"filename.txt"
。