c语言初始化结构体
1. c语言memset初始化结构体问题
1.memset函数的原型void *memset(void *s, char ch,size_tn);
函数的第一个形式参数是指针类型,所以实参因为一个地址,即&a
注意&a与a是不同的.a是结构体变量名,而&a是变量a的地址.
2.另外memset()是一个库函数函数,需要加头文件#include<string.h>
3.正如你所说的全局与主函数内定义变量a是有一点区别
源代码如下:
#include<stdio.h>
#include<string.h>
typedef struct ss
{
int num;
int dir[5][3];
}tent;
//tent a;
int main()
{
tent a;
printf("a=%p
",a); //输出的是变量的地址
printf("&a=%p
",&a);//注意a与&a的区别
memset(&a,0,sizeof(a));
return 0;
}
主函数内运行结果:
这个没警告的.
已上在VC6.0下的结果
为嘛第二个没警告,暂时不清楚.但第一个有警告是合理的.
2. C语言结构体数组初始化```从键盘输入
/*
先这样改,看看,int型7/4=1的,结果当然不如你所料了。
按照奶茶的把%d的改过来了。那个float和double的也有道理,但用不着改了。还有,你的输入写的不是很好,最好一项一项的输入,我就不改了。
*/
#include<stdio.h>
struct STUDENT{
char name[20];
int age;
char sex;
int weight;
};
float aver(struct STUDENT *q,int n);
main()
{
struct STUDENT a[4];
struct STUDENT *p;
int i;
float ave;
p=a;
printf("请输入四个学生的数据:\n");
for(i=0; i<4; i++)
{
p=a;
printf("请输入第%d个学生的姓名:\n",i+1);
gets((p+i)->name);
printf("请输入第%d个学生的年龄,性别和体重:\n",i+1);
scanf("%d%c%d",&((p+i)->age),&((p+i)->sex),&((p+i)->weight));
}
ave=aver(p,4);
printf("四个学生的平均年龄是:%f",ave);
}
float aver(struct STUDENT *q,int n)
{
int i,sum;
float ping;
sum=0;
for(i=0; i<n; i++,q++)
{
sum+=q->age;
}
ping= (float)sum/n;
return(ping);
}
3. c语言如何对结构体某一成员初始化
结构体与类一样可以定义一个构造函数。
如下:
struct s{
s(){
a=0;
}
int a;
};
每次声明一个结构体变量时都会调用结构体的构造函数,在构造函数里面添加初始化语句就可以了
4. 如何对结构体变量进行初始化
结构体初始化可以再定义时制定初始值,如:
struct
student
{
int num;
char name[20];
} student1 =
{10001,"zhangxin"};
也可以采取申明类型与定义变量分开的形式,在定义变量时进行初始化:
student student1 =
{10001,"zhangxin"} 。
在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data
type)的一类。
结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
5. c语言结构体初始化(编译系统vs2010)
.location 这种叫按名称初始化,是gun对c的扩展,只有gnu支持,就是linux下的编译器支持(gcc, g++)
程序员写代码的时候,最好使用被广泛支持的标准,尽量不要使用个别编译器的私有定义。
关注优酷上的 ”C学习指南“,在第10章里会讲这个问题。
6. 关于C语言结构体构造函数初始化的问题
#include<iostream>
#include<string>
using std::cout;
using std::string;
class A{
string a;
public:
A(string ab="1wggg"){a=ab;}
string geta(){return a;}
};
void main()
{
A b;
cout<<b.geta();
}
7. C语言结构体里的结构体怎么初始化
中间又有结构体嵌套,你的格式应该是{{
..{}..},{..{}..},...}
其实一般不这么初始化,定义全局静态变量或者指针,指针的话通过malloc分配内存,然后通过->访问结构体成员,静态变量的通过.访问成员,然后赋值。
8. C语言结构体里的结构体怎么初始化
方法是在定义变量的同时给其一初始值。结构体变量的初始化,遵循相同的规律。
简单变量的初始化形式如下:
数据类型 变量名=初始化值;
例如,定义整型变量a,并给其初始化值10的语句如下
int a=10;
数组的初始化,需要通过一常量数据列表,对其数组元素分别进行初始化,形式如下:
数据类型 数组名称〔数组长度〕={初始化值1,初始化值2,…, 初始化值n};
例如,定义长度为5的整型数组,并对其初始化的语句如下:
int A[5]={20,21,0,3,4};
结构体变量的初始化方式与数组类似,分别给结构体的成员变量以初始值,而结构体成员变量的初始化遵循简单变量或数组的初始化方法。具体的形式如下:
struct 结构体标识符
{
成员变量列表;
…
};
struct结构体标识符 变量名={初始化值1,初始化值2,…, 初始化值n };
例如,定义struct Point类型变量,并初始化的语句如下:
struct Point oP1={0.0,0.2,0.3};
struct Point类型变量oP1的三个成员变量的值分别为
oP1.x=0.0,
oP1.y=0.2
oP1.z=0.3
由于定义结构体变量有三种方法,因此初始化结构体变量的方法对应有三种,上面已经介绍了其中的一种形式,其他两种形式如下:
struct Point
{
double x;
double y;
double z;
} oP1={0.0,0.2,0.3}; struct
{
double x;
double y;
double z;
} oP1={0.0,0.2,0.3};
在初始化结构体变量时候,既可以初始化其全部成员变量,也可以仅仅对其中部分的成员变量进行初始化。例如:
struct Student
{
long id;
char name[20];
char sex;
}a= {0};
其相当于a.id=0;a.name=“”;a.sex=‘\0x0’。
仅仅对其中部分的成员变量进行初始化,要求初始化的数据至少有一个,其他没有初始化的成员变量由系统完成初始化,为其提供缺省的初始化值。
9. c语言怎么结构数据初始化
C语言
结构体类型
变量初始化分为
普通变量
和
数组变量
两种形式,说明如下:
typedef struct
{
int x,y;
}
direction
;
direction dir={1,2} ; //普通变量,用一组{}括起来,成员变量数据间以逗号分隔,按变量定义顺序对应数值。未赋值成员,默认填0
direction move[8]={ //数组变量,整体用一组{}括起来,每一个元素按普通变量格式进行书写,各元素间用逗号分隔。未赋值元素,默认填0
{0,0},{0,1},{1,0},{1,1},
{2,0},{2,1},{3,0},{3,1}
};
10. c语言结构体初始化
你已经定义了一个mem1,下一句又定义了一个mem1,所以它会提示你多次定义了,应该把第二个struct Mem去掉吧