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 : '('
} 展开
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 : '('
} 展开
展开全部
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;
}
{
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;
}
展开全部
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
{
//分配成功语句
}
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
{
//分配成功语句
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
追问
我补充提问了,希望您可以看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
struct XX *pS;
pS = (struct XX *)malloc(sizeof(struct XX));
pS = (struct XX *)malloc(sizeof(struct XX));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
struct stu
{
int a;
}*pa;
pa=(stu *)malloc(sizeof(stu));
{
int a;
}*pa;
pa=(stu *)malloc(sizeof(stu));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询