首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-06-15 
数组声明及在代码中使用形式先声明类型:typedef struct {intbitIDchar *lNamechar *fNamechar idNum[8]

数组声明及在代码中使用形式
先声明类型:
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 *, 不是数组

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

热点排行