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

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

2012-02-15 
问一个比较菜指针的问题typedefstruct{....}*linklink*MM(link*)malloc(n*sizeof(link))这样是分配了n

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

热点排行