我在include之后和main函数之前看到这一行。
size_t getline(char **lineptr, size_t *n, FILE *stream);
我能推断出什么
我被困的地方
*
s的含义是什么?我认为只有一个*
用于指针。答案 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;