问一个比较菜指针的有关问题
问一个比较菜指针的问题
typedef struct
{
....
}*link;
link *M;
M=(link *)malloc(n*sizeof(link));
这样是分配了n个空间,如果向访问单个的结构体空间该怎样呢?M[i++]可以吗?貌似网上说的可以,但我自己实现起来编译器报错呢?我用的是devc++。
谢谢各位指教
------解决方案--------------------
这个只是给1个节点啊
M[i]
表示有m个节点 当然可以直接访问了
就像数组一样
可以这样理解
int a=new int[1];//这里只是分配了1个空间
可以直接a=10;
但是 int *a=new int [10];
就可以给a[i]赋值拉
------解决方案--------------------
typedef struct
{
int a[10];
}*ps,s;
ps m = (ps)malloc(10*sizeof(s));
------解决方案--------------------
在 <effective c++> 里面有讲,malloc只是分配了储存空间.
在楼主的例子中
typedef struct
{
....
}*link;
link *M;
M=(link *)malloc(n*sizeof(link));
M所指向的只是n*sizeof(link))大的一片空间,并不知道里面放的是n个link的结构.
如果用new的话,它会自动调用构造函数,构造出n个link结构.
ps:在c++中,struct和class几乎一样,惟一的区别就是struct对于默认成员是public,而class对于默认成员是private!
typedef struct
{
....
}*link;
link *M;
M=(link *)malloc(n*sizeof(link));
这样是分配了n个空间,如果向访问单个的结构体空间该怎样呢?M[i++]可以吗?貌似网上说的可以,但我自己实现起来编译器报错呢?我用的是devc++。
谢谢各位指教
------解决方案--------------------
这个只是给1个节点啊
M[i]
表示有m个节点 当然可以直接访问了
就像数组一样
可以这样理解
int a=new int[1];//这里只是分配了1个空间
可以直接a=10;
但是 int *a=new int [10];
就可以给a[i]赋值拉
------解决方案--------------------
typedef struct
{
int a[10];
}*ps,s;
ps m = (ps)malloc(10*sizeof(s));
------解决方案--------------------
在 <effective c++> 里面有讲,malloc只是分配了储存空间.
在楼主的例子中
typedef struct
{
....
}*link;
link *M;
M=(link *)malloc(n*sizeof(link));
M所指向的只是n*sizeof(link))大的一片空间,并不知道里面放的是n个link的结构.
如果用new的话,它会自动调用构造函数,构造出n个link结构.
ps:在c++中,struct和class几乎一样,惟一的区别就是struct对于默认成员是public,而class对于默认成员是private!