1. c语言结构体中奇怪的结构,求解释。
C++ 中的结构是可以添加函数的。这是C++的结构体与C的结构体的区别之一
你可以直接把它看作C++中的一个类,只是属性都是Pubilc的
以上看出SSerInfo()是类SSerInfo的构造函数,:后面是参数列表进行初始化类的数据成员
2. c语言结构体问题
1、stutype不是变量名,而是定义一个struct stu结构体新的别名。例如要定义一个该结构体变量可以有以下两种定义方法:(1)struct stu stu_t; (2)stutype stu_t; 这两种方法其实是一样的。
2、如果这么定义结构体(去掉typedef)
struct stu{
int a;
float b;
}stutype;
那么D就是对的
3. C语言结构体问题
x是结构体指针,和其他指针一样语言初始化指向一个地址,
例如
int a=23,*pa;
pa=&a;(你的问题类似没有这句代码)
这里是一样的,你只是声明了x是指针,并没有指向任何结构体变量,那么x保存的地址是一个随机值,直接去访问这个值的内容,是危险的!
所以2种做法,一种你声明一个结构体用x指向它,比如 struct a test;
c=&test;这时候你用x-> 的效果就好像你直接访问test结构体。
另一种是用malloc函数分配一个结构体空间,用x指向它。可以参考malloc函数,格式很统一,都是那个格式。
最后,总结一下:只是声明一个类型的指针是不能直接用它的,必须让它指向这种类型的变量或者变量空间。
4. C语言结构体的问题!!!
可以确定,你贴出来的这段代码没错。
snake.x[0]=200;
snake.y[0]=100;
snake.direct=4;
snake.node=4;
snake.life=1;
赋值不能放在头文件中,要放到cpp中
5. C语言结构体问题。
#include<stdio.h>
intmain()
{intday,month,year,sum,leap;
printf("pleaseinputyear,month,day ");
scanf("%d%d%d",&year,&month,&day);
switch(month)
{case1:sum=0;break;
case2:sum=31;break;
case3:sum=59;break;
case4:sum=90;break;
case5:sum=120;break;
case6:sum=151;break;
case7:sum=181;break;
case8:sum=212;break;
case9:sum=243;break;
case10:sum=273;break;
case11:sum=304;break;
case12:sum=334;break;
default:printf("dataerror");break;
}
sum=sum+day;
if(year%400==0||(year%4==0&&year%100!=0)leap=1;
elseleap=0;
if(leap==1&&month>2)sum++;
printf("Itisthe%dthday.",sum);
return0;
}/*
运行结果如下:
pleaseinputyear,month,day
1992523<回车>
Itisthe144thday.
*/
6. C语言结构体中的[]问题,非高手莫进!
编译对那个 char table[]; 这种定义会默认解释成 char table[0];
零长数组, 这个特性多数是编译器的扩展, 零长数组是不占用空间的,你它进行 sizeof() 返回是零, 它只是在语法上提供一个符号, 访问它相关于访问 tt.num 后续的内存, 就像你第二个例子, 由于局部变量是在栈上分配的, 所以 tt.table[0] 正好落在 begin 上第一个字节上(即低字节), 所以 tt.table[0] = 2 相当于:
((char *)&begin)[0] = 2;
7. C语言的结构体问题
void sort(struct student stu[],int n)
{
int i,j,k;
struct student t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(stu[j].score>stu[k].score)k=j;
t=stu[i];
stu[i]=stu[k];
stu[k]=t;
}
}
这个就是学生按成绩升序排列的函数
#include <stdio.h>
long int fun(int n)
{
int i,a;
for(i=1,a=1;i<=n;i++)
a*=i;
return a;
}
void main()
{int i;
float s=0;
for(i=1;i<=5;i++)
s+=1/fun(i);
printf("%f",s);
}
这是你说的第二个
其实这些都是些比较简单的`!
觉得可以的话就给分我哦~
呵呵~!