c语言:为结构体指针的指针开辟空间

如:structstu{int*a;}main(){inti=0,j=0;structstu*p;p=malloc(10*sizeof(p));//为p开辟空间,成功p-... 如:
struct stu
{
int *a;
}

main()
{
int i=0,j=0;
struct stu *p;
p=malloc(10*sizeof(p)); //为p开辟空间,成功
p->a=malloc(10*sizeof(int)); //不知道成功没
for(i=0;i<10;i++)
for(j=0;j<10;j--)
scanf("%d",&(info+i)->(a+j)); // error C2059: syntax error : '('

}
展开
 我来答
lesey1234
2011-11-29 · TA获得超过355个赞
知道小有建树答主
回答量:421
采纳率:0%
帮助的人:357万
展开全部
struct stu
{
int a[]; //!!
}; //--丢失逗号

int main()
{
int i=0,j=0;
struct stu *p;
// p=malloc(10*sizeof(p)); //为p开辟空间,成功
p= (stu*)malloc(10*sizeof(stu));//分配后的空间需要强转为stu* 才可以赋值给P类型一样。

if(p==NULL){ //检查申请是否成功
return false;
}
//p->a=malloc(10*sizeof(int)); //不知道成功没----对于struct,对齐的大小也是最大的基本元素的对齐大小,对象的大小需要考虑元素的对齐,并且需要是最大基本元素的整数倍。(参考下struct和union的内存对齐方式)
//所以不必再为结构体内部申请空间。 另外int *a, 申请多大的空间也没用啊 就一个int型 所以结构体里面定义为int a[]或者定义结构体数组。

for(i=0;i<10;i++){
for(j=0;j<10;j++){
scanf("%d",p->a+j); // error C2059: syntax error : '('----info 不知道你是怎么定义的,scanf("%d",p->a+j);
}
}

return 0;
}
糖豆豆的Dad
2011-11-29 · 超过26用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:80.4万
展开全部
malloc默认分配的空间类型是 void* 。。所以一般使用malloc时,要加强制类型转化。。
p=( struct stu* )malloc(10*sizeof(p)); //为p开辟空间,成功
p->a=( int* )malloc(10*sizeof(int)); //不知道成功没
malloc分配失败 返回NULL
if( p->a=( int* )malloc(10*sizeof(int)) == NULL )
{
//分配失败语句
}
else
{
//分配成功语句
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hehefaq
2011-11-29 · TA获得超过458个赞
知道小有建树答主
回答量:470
采纳率:0%
帮助的人:383万
展开全部
可以用 malloc 来申请空间 然后返回值可以给指针

参考网址:http://baike.baidu.com/view/736228.htm
追问
我补充提问了,希望您可以看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zero_fn
2011-11-29 · TA获得超过2258个赞
知道小有建树答主
回答量:1173
采纳率:80%
帮助的人:456万
展开全部
struct XX *pS;
pS = (struct XX *)malloc(sizeof(struct XX));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
饮马黄河源
2011-11-29
知道答主
回答量:25
采纳率:0%
帮助的人:9.7万
展开全部
struct stu
{
int a;
}*pa;
pa=(stu *)malloc(sizeof(stu));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式