这两个声明有什么区别?

时间:2015-04-02 10:55:31

标签: c arrays

在这段代码中,char *lineptr[MAXLINES];char *lineptr[]之间有什么区别 char *lineptr[MAXLINES]; /* pointers to text lines */ char *alloc(int); int readlines(char *lineptr[], int nlines);

{{1}}

2 个答案:

答案 0 :(得分:0)

char *lineptr[MAXLINES];表示该函数声明指向大小为MAXLINES的数组的指针。

char *lineptr[] - 此代码段提供数组的基址,以从该数组中读取nlines

答案 1 :(得分:0)

此:

Because updated_at column have the date with minutes and seconds. 
You are trying to fetch records for which updated_at has the value 
23/02/2016 00:00:00

定义长度为char *lineptr[MAXLINES]; 的{​​{1}}数组。

对于声明如下的函数:

char *

参数MAXLINES相当于int readlines(char *lineptr[], int nlines); 。这是因为当一个数组传递给一个函数时,它会衰减成一个指向数组第一个成员的指针。

您可以像这样调用此函数:

char *lineptr[]

函数参数与此不同:

char **lineptr

此语法无效,因为它声明了一个未指定大小的数组而未初始化它。另一方面,这是有效的:

char *lineptr[MAXLINES];
....
readlines(lineptr, MAXLINES);

在这种情况下,char *lineptr[]; 是一个包含3个元素的数组,数组长度由初始化程序确定。