读书人

问一个比较菜指针的有关问题

发布时间: 2012-02-15 12:09:44 作者: rapoo

问一个比较菜指针的问题
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!

读书人网 >C语言

热点推荐