c语言结构体指针的一个问题
定义了一个结构体:structpp{unsignedcharchrom[LCHROM];doublehopevalue1,hopevalue2,parent1,paren...
定义了一个结构体:
struct pp {unsigned char chrom[LCHROM];
double hopevalue1,hopevalue2,parent1,parent2;
double as;
};
struct pp *oldpop,*newpop,*p1;
在下面的函数中能不能这样用oldpop[i].hopevalue1=0?
也就是说*oldpop是指向数组首地址的 展开
struct pp {unsigned char chrom[LCHROM];
double hopevalue1,hopevalue2,parent1,parent2;
double as;
};
struct pp *oldpop,*newpop,*p1;
在下面的函数中能不能这样用oldpop[i].hopevalue1=0?
也就是说*oldpop是指向数组首地址的 展开
展开全部
可以的,在你的基础上我补充了一点点,是我对指针应用的一点小经验,此程序经过调试,希望对你有帮助:
#include <stdio.h>
#include <string.h>
struct pp
{ char s[15];
float hopevalue1;
};
void main()
{pp a[3];
struct pp *oldpop,*newpop,*p1;
oldpop=a;
oldpop[0].hopevalue1=12;
strcpy(oldpop[0].s,"helloworld");
for(int i=1;i<3;i++)
/*scanf("%s%f",oldpop[i].s,&oldpop[i].hopevalue1);这样用也可以*/
scanf("%s%f",(*(oldpop+i)).s,&(oldpop+i)->hopevalue1);
for(int j=0;j<3;j++)
printf("%s,%f\n",oldpop[j].s,oldpop[j].hopevalue1);}
#include <stdio.h>
#include <string.h>
struct pp
{ char s[15];
float hopevalue1;
};
void main()
{pp a[3];
struct pp *oldpop,*newpop,*p1;
oldpop=a;
oldpop[0].hopevalue1=12;
strcpy(oldpop[0].s,"helloworld");
for(int i=1;i<3;i++)
/*scanf("%s%f",oldpop[i].s,&oldpop[i].hopevalue1);这样用也可以*/
scanf("%s%f",(*(oldpop+i)).s,&(oldpop+i)->hopevalue1);
for(int j=0;j<3;j++)
printf("%s,%f\n",oldpop[j].s,oldpop[j].hopevalue1);}
展开全部
不可以,你这里仅仅是定义了一个指向结构体的指针变量
如果你要可以这样使用的话,只要定义一个结构体数组即可
给你举个简单的例子把
#include <stdio.h>
struct PP
{
unsigned char chrom[100];
double hopevalue1,hopevalue2,parent1,parent2;
double as;
};
void main()
{
struct PP oldpop[3];
int i;
for(i=0;i<3;i++)
{
scanf("%d",&oldpop[i].hopevalue1);
}
for(i=0;i<3;i++)
printf("%d",oldpop[i].hopevalue1);
}
如果你要可以这样使用的话,只要定义一个结构体数组即可
给你举个简单的例子把
#include <stdio.h>
struct PP
{
unsigned char chrom[100];
double hopevalue1,hopevalue2,parent1,parent2;
double as;
};
void main()
{
struct PP oldpop[3];
int i;
for(i=0;i<3;i++)
{
scanf("%d",&oldpop[i].hopevalue1);
}
for(i=0;i<3;i++)
printf("%d",oldpop[i].hopevalue1);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当然可以。不过你要先让oldpop指向一个存在的结构体,以免发生内存错误。
比如 struct pp a;
oldpop=&a;
或者使用内存分配函数申请空间。
比如 struct pp a;
oldpop=&a;
或者使用内存分配函数申请空间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询