
结构体后面加;的问题
对比这两个程序吧。第一个#include<stdio.h>#include<stdlib.h>#include<string.h>intmain(){structstud...
对比这两个程序吧。
第一个
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
struct student
{
long num;
char name[20];
char sex;
float score;
}; //这里为什么要加分号
struct student stu_1;
struct student*p;
p=&stu_1;
stu_1.num=89101;
strcpy(stu_1.name,"Lilin");
stu_1.sex='M';
stu_1.score=89.5;
printf("No.%ld:\nname:%s\nsex:%c\nscore:%f\n",stu_1.num,stu_1.name,stu_1.sex,stu_1.score);
printf("\nNo.:%ld\nname:%s\nsex:%c\nscore:%f\n",(*p).num,(*p).name,(*p).sex,(*p).score);
system("pause");
return 0;
}
第二个#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct person
{
char name[20];
int count;
} //这里没有加;
leader[3]={"Li",0,"Zhang",0,"Fun",0}; //leader[3]={{"Li",0},{"Zhang",0},{"Fun",0}};//而是在这里加;
int main()
{
int i,j;
char leader_name[20];
for(i=1;i<=10;i++)
{
scanf("%s",leader_name);//另外顺便问一下这里 &可以加 可以不加,等效的?
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0)
leader[j].count++;
}
printf("\n");
for(i=0;i<3;i++)
printf("%5s:%d\n",leader[i].name,leader[i].count);
system("pause");
return 0;
} 展开
第一个
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
struct student
{
long num;
char name[20];
char sex;
float score;
}; //这里为什么要加分号
struct student stu_1;
struct student*p;
p=&stu_1;
stu_1.num=89101;
strcpy(stu_1.name,"Lilin");
stu_1.sex='M';
stu_1.score=89.5;
printf("No.%ld:\nname:%s\nsex:%c\nscore:%f\n",stu_1.num,stu_1.name,stu_1.sex,stu_1.score);
printf("\nNo.:%ld\nname:%s\nsex:%c\nscore:%f\n",(*p).num,(*p).name,(*p).sex,(*p).score);
system("pause");
return 0;
}
第二个#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct person
{
char name[20];
int count;
} //这里没有加;
leader[3]={"Li",0,"Zhang",0,"Fun",0}; //leader[3]={{"Li",0},{"Zhang",0},{"Fun",0}};//而是在这里加;
int main()
{
int i,j;
char leader_name[20];
for(i=1;i<=10;i++)
{
scanf("%s",leader_name);//另外顺便问一下这里 &可以加 可以不加,等效的?
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0)
leader[j].count++;
}
printf("\n");
for(i=0;i<3;i++)
printf("%5s:%d\n",leader[i].name,leader[i].count);
system("pause");
return 0;
} 展开
1个回答
展开全部
第一个只是定义了类型为student的结构体
第二个这里没有加 是因为 定义了结构体类型为student的结构体数组 ,在定义结构体类型的时候,定义的结构体变量名
scanf("%s",leader_name); 可以写成scanf("%s",&leader_name);
leader_name是数组的首地址, &leader_name是数组的地址,两个值是一样的。但意义不一样
p = leader_name ;p++ ;p = leader_name[1];//p指向下一个数组元素
p = &leader_name ;p++;//p指向下一个数组。

2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询