定义结构体时的初始化默认值

结构体变量定义时的初始化问题:

默认值同变量一样,int型的为0,指针型的为“NULL”------------并不是整个结构体为NULL,其中的int型还是有值0的,只是指针型的为NULL

验证一下:

#include "stdafx.h"
struct stu
{
	int data;
	char *name;
}boy1,girl={102,"xiaom"};

int _tmain(int argc, _TCHAR* argv[])
{
	printf("Number=%d\nName=%s\n",boy1.data,boy1.name);
	printf("Number=%d\nName=%s\n",girl.data,girl.name);
	boy1=girl;
	printf("Number=%d\nName=%s\n",boy1.data,boy1.name);
	printf("Number=%d\nName=%s\n",girl.data,girl.name);
	return 0;
}

输出结果为:

同理,链表的节点如果只是定义而未赋值的话,它的data为0,指针为null

但是,初始化的值是不确定的,需要自己清空。

一般是会初始化为0,但建议不要依赖自动初始化,自己动手清空,比较保险。

全局的变量会自动清空,但是局部的话,还是自己手动清空的!

另外,如果只是声明的话,编译器是不会为此声明分配空间的

如下:

struct stu
{
	int data;
	char *name;
};

这样是没有初始值的

时间: 2024-11-06 03:32:27

定义结构体时的初始化默认值的相关文章

C语言 结构体作为参数和返回值使用

方案一:结构体变量作为参数,进行传值. 编译器需要拷贝,不影响origin value,使用成员操作符(.)直接访问 /********************************************************************** * 版权所有 (C)2017, Wang maochun. * * 文件名称:travel.cpp * 文件标识:无 * 内容摘要:主要演示结构体作为参数以及返回值 * 其它说明:"传值” * 当前版本:V1.0 * 作 者:Wang m

typedef struct与struct定义结构体

今天在定义结构体的时候发现typedef struct与struct定义结构体有一些不同之处: 结构也是一种数据类型, 可以使用结构变量, 因此,  象其它 类型的变量一样, 在使用结构变量时要先对其定义. 定义结构变量的一般格式为: struct 结构名 { 类型  变量名; 类型  变量名; ... } 结构变量; 结构名是结构的标识符不是变量名. 另一种常用格式为: typedef struct 结构名 { 类型  变量名; 类型  变量名; ... } 结构别名; 另外注意:  在C中,

C Language Study - 结构体成员指针初始化

结构体成员指针初始化 不可以正确运行的初始化方式(1): #include <stdio.h> #include <string.h> #include <malloc.h> //#include "a.h" //char a[100]; struct stu { char* name; int num; }*pst,st; void init_pst() { pst = (struct stu *)malloc(sizeof(struct stu)

java 反射: 当Timestamp类型的属性值为null时,设置默认值

import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.sql.Timestamp; class Person { private String name; private int age; private Timestamp birth; public Timestamp getBirth() { return birth

easyui的combobox下拉框初始化默认值以及保持该值一直显示的方法

easyui的combobox下拉框默认初始值是空,下面是实现从远程加载数据之后初始化默认值,以及让该值一直排在下拉框的最顶部的方式. 目前的需求是需要在初始化的时候添加"全部数据库"字段,并且在下拉的时候,"全部数据库"一直排在最顶部. 初始化效果如下: 下拉之后的效果如下: 实现方式: easyui的combobox有一个loader属性,easyui的API对loader属性说明如下: easyui的combobox有一个onLoadSuccess事件,eas

select2多选框初始化默认值和获得值

获得值: //chang函数获取选择的option $(".js-example").change(function () { select_ops = $(".js-example").val().join("-"); }); 初始化默认值: $('.js-example').val([value1,value2,value3...]).trigger('change') 原文地址:https://www.cnblogs.com/yang-xi

C数组&amp;结构体&amp;联合体快速初始化

背景 C89标准规定初始化语句的元素以固定顺序出现,该顺序即待初始化数组或结构体元素的定义顺序. C99标准新增指定初始化(Designated Initializer),即可按照任意顺序对数组某些元素或结构体某些成员进行选择性初始化,只需指明它们所对应的数组下标或结构体成员名.GNU C将其作为C89模式的扩展. 借助指定初始化特性,可实现数组或结构体元素的快速初始化. 1 数组初始化 在数组初始化列表中使用"[index常量表达式]=value"形式可对index所指定的某个元素进

Go创建及结构体变量是指定字段值

package main import ( "fmt" ) type Stu struct { Name string Age int } func main() { //方式1 //在创建结构体变量时,就直接指定字段的值 var stu1 = Stu{"小明", 19} // stu1---> 结构体数据空间 stu2 := Stu{"小明~", 20} //类型推导并省略var //在创建结构体变量时,把字段名和字段值写在一起, 这种写

全局结构体变量的初始化以及将结构体变量转换为char类型输出问题

#include<stdio.h> #include<stdlib.h> struct node{ int a; int b; char c; char d; }; /*struct node A; 全局变量不能在这儿进行初始化,令我震惊啊,错误让你迷茫到死 A.a=1; A.b=2; A.c='a'; A.d='c';*/ //struct node A={1,2,'a','c'};但是这种写法可以 1:初始化和赋值不是一个概念. 2:// 在全局空间(即函数体之外)只能执行数据