指针作为参数

时间:2016-01-19 10:42:01

标签: c arrays string pointers

如果你有一个简单的函数,例如int open(const char *path, int oflags);,你可以直接将字符串作为*path传递,例如"filename.txt。您也可以传递&foo(这是一个地址,在这种情况下可能没有任何意义)。您甚至可以在其中放置一个普通指针。

所以我的问题是,实际上是一个地址,当你有一个指针作为参数或者只是一些适合参数的数据时(在这种情况下是const char)。我想知道因为你可以毫无问题地直接传递ascii。

THX。

2 个答案:

答案 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"