A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在学习基础视频的过程中,老师一再强调,变量定义后一定要初始化之后在使用,但是有的具体该怎么初始化一直很不清楚。比如int 变量,如果不初始化就是随机的一个数值,但是如果是全局变量的话就默认是0,还有哪些变量默认是0的,求解答!!!

20 个回复

倒序浏览
我觉得最好的习惯就是变量都初始化下,这个肯定错不了。当定义一个变量后就相当于定义一个指针,指到了刚内存为该变量分配的空间,这个空间里面本来可能有数据,初始化的作用就是删除这个数据!
嗯,就酱紫!欢迎交流{:3_57:}
回复 使用道具 举报
你好,我也刚学完这里,说说我的理解吧。1,定义的同时初始化: int a = 1;  不管以前是什么值,现在已经初始化了,
回复 使用道具 举报
部分初始化指的是 int a = 1 , b ;  a 已经初始化了,但b没有初始化呢。
先定义后初始化   int a ;  先定义了a,但是没有指定值, 后边a = 1 就是已经初始化了。。  不知道我说的对吗??
                            a = 1
回复 使用道具 举报
你的担心是多余,建议定义后初始化为0;至于随机数值这个因编译器不同,而默认值也不同。
回复 使用道具 举报
yuang4074 发表于 2015-5-26 16:11
你的担心是多余,建议定义后初始化为0;至于随机数值这个因编译器不同,而默认值也不同。 ...

基本数据类型可以直接初始化为0,如果碰上数组,结构体或者指针这类复杂数据类型该怎么初始化呢?
回复 使用道具 举报
学习专用 发表于 2015-5-26 15:28
部分初始化指的是 int a = 1 , b ;  a 已经初始化了,但b没有初始化呢。
先定义后初始化   int a ;  先定 ...

完全正确。其实基本类型的初始化简单,主要是数组,结构体这类的复杂类型初始化有点不清楚。
回复 使用道具 举报
数组:如int a[100]={0};//这样就全部初始化为了0
结构体:如 Student s;s->age=0;s->sex=0;s->score=0;//拿出来按照类型不同一一初始化
指针:如 int *p=null;//初始化为空
回复 使用道具 举报 1 0
Dariel 发表于 2015-5-26 15:03
我觉得最好的习惯就是变量都初始化下,这个肯定错不了。当定义一个变量后就相当于定义一个指针,指到了刚内 ...

哎呦!不错哦。很清新脱俗的想法,豁然开朗啊。但是基本类型容易初始化,数组结构体指针之类的复杂数据类型该怎么办呢?例如指针,int *p = 0,这样的写法对吗?
回复 使用道具 举报
yuang4074 发表于 2015-5-26 16:24
数组:如int a[100]={0};//这样就全部初始化为了0
结构体:如 Student s;s->age=0;s->sex=0;s->score=0;// ...

受教了,谢谢!
回复 使用道具 举报
yuang4074 发表于 2015-5-26 16:24
数组:如int a[100]={0};//这样就全部初始化为了0
结构体:如 Student s;s->age=0;s->sex=0;s->score=0;// ...

才发现,你也喜欢火影吗????
回复 使用道具 举报
yuang4074 发表于 2015-5-26 16:24
数组:如int a[100]={0};//这样就全部初始化为了0
结构体:如 Student s;s->age=0;s->sex=0;s->score=0;// ...

才发现,你也喜欢火影吗????
回复 使用道具 举报
张晓珊 发表于 2015-5-26 16:26
哎呦!不错哦。很清新脱俗的想法,豁然开朗啊。但是基本类型容易初始化,数组结构体指针之类的复杂数据类 ...

对于数组来说,int a[5]={1,2,3};这是不完全初始化,未被初始化的自动归零,就等价于int a[5]={1,2,3,0,0};或者不初始化,int a[5];里面的都是垃圾值,或者全部清零int a[5]={0};最后这种方法最好用了。

对于结构体来说,定义的时候可以整体赋值,定义之后只能单独赋值,考虑到结构体的使用场景,应该都是先赋值再应用。

对于指针,int *p = 0,这个不对。可以这样看 int* p  意思是p是一个只能存放整型地址的数据类型,所以说p中存放的一定是一个内存中的地址,而且这个地址所存放的数据是整型。
例如:
int p =10;
int *q=&p;//q是int*类型,q只能存放int类型变量的地址
int **i=&q;//i是int**类型,i只能存放int *类型变量的地址
以此类推,再多*都不怕{:3_53:}

嗯,估计我们会是一届啊
回复 使用道具 举报
Dariel 发表于 2015-5-26 19:32
对于数组来说,int a[5]={1,2,3};这是不完全初始化,未被初始化的自动归零,就等价于int a[5]={1,2,3,0,0 ...

谢谢啦。我正在进行报名流程,你呢?
回复 使用道具 举报
前来看学习
回复 使用道具 举报
定义局部变量时,不初始化默认值是随机的;而全局变量不初始化默认值是0.
回复 使用道具 举报
好好在看一边视频~
回复 使用道具 举报
楼上大神们说的好详细啊
回复 使用道具 举报
在OC 中 ,所有变量都自动初始化为0,
回复 使用道具 举报
纠结这个貌似没有意义.记得用就要初始化什么都解决了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马