请解释POSIX getline()函数的

时间:2017-06-21 00:11:53

标签: c

我在include之后和main函数之前看到这一行。

size_t getline(char **lineptr, size_t *n, FILE *stream);

我能推断出什么

  • getline是一个需要三个输入参数的函数。我也理解FILE指针(第三个参数)

我被困的地方

  • 我不明白其他两个输入参数和size_t getline。
  • size_t是这里的类型吗?
  • 两个* s的含义是什么?我认为只有一个*用于指针。

2 个答案:

答案 0 :(得分:3)

size_t是一种类型。它可能是在包含的一个头文件中定义的。该函数返回该类型的值,其第二个参数是指向该类型值的指针。

*表示指针是正确的。所以**是指向指针的指针。所以函数参数lineptr是内存中位置(A)的地址,它包含内存中另一个位置(B)的地址;第二个位置的数据应解释为char值。这意味着该函数可以将存储在位置A的值更改为指向除B之外的某个位置。

答案 1 :(得分:2)

指针变量需要内存来存储作为内存地址的值。如果要定义指针变量来存储int类型变量的地址,可以像这样定义指针:

int *mypointer = NULL;
int x = 10;
//store the address of variable x
mypointer = &x;

众所周知,指针变量只是存储某人的地址,而这只是一个数字。因此,指针变量也在存储空间中具有地址。如何存储指针的地址?我们可以这样做:

int *mypointer = NULL;
int x = 10;
//the pointer store the x's address
mypointer = &x;

//define a pointer to store the pointer variable mypointer's address
int **newpointer = &mypointer; 

因此,char **与int **类似。

type size_t是unsigned int或其他类型。注意size_t是无符号类型,无论size_t是int的类型还是其他人。键入ssize_t是C中的签名类型。为简单起见,size_t 可能定义如下:

typedef  unsigned int size_t;
typedef int ssize_t;