读书人

数组声明及在代码中使用形式解决方案

发布时间: 2012-06-15 19:37:05 作者: rapoo

数组声明及在代码中使用形式
先声明类型:
typedef struct {
int bitID;
char *lName;
char *fName;
char idNum[8];
int age;
Class year;
float gpa;
int gradYear;
}DBrecord;
在main中再声明:
DBrecord **records,
**lastNameArray,
**firstNameArray;
for(i = 0; i < num; i++) // 初始化,在初始化前有内存分配malloc,
{
records[i] = NULL;
lastNameArray[i] = NULL;
firstNameArray[i] = NULL;
}
这是部分代码,为什么不在main中直接声明成 **records[], **lastNameArray[]? 如果声明改成声明成数组形式,代码运行有警告。是不是声明数组的时候不需要“[]”,而在使用这个变量的时候再加上“[]”?
谢谢

[解决办法]
DBrecord **records;
records是指向指针的指针,和DBrecord **records[]是不同的。

是不是声明数组的时候不需要“[]”?
声明数组的时候,肯定需要[]。
比如,栈上的数组:int a[10];
如果是动态申请:int *p; p = new int[10];
new是c++的操作符,c语言就用malloc。


[解决办法]
这里的**records可以理解为数组指针,如果要生成数组的话还是要用[]的,但是两者不能混用。
但是生命二维数组的时候可以写成*records[].
另外,因为是数组指针,所以在使用时可以以数组的时候使用,所以可以像你后边说的一样,用[]来进行操作。
[解决办法]
malloc返回的是void *, 不是数组

而且你并未定义有数组,那么如何冒出来要声明数组?

读书人网 >C++

热点推荐