C语言小白变怪兽下载求大神指点错误

恩,你说得对,的确是越界的,应该也是野指针了,只不过恰好访问到了S,没出错而已。是我想错了,不好意思,呵呵


不是什么野指针,是没有搞清楚变量在物理内存中的实际位置。按照你的代码,实际上指针变量a以及,s[0],s[1],s[2],s[3]是相邻存放的,一般来说(至少在我的电脑上是这样),先定义的变量存放于高地址,后定义的变量存放于低地址。然后你又有一个a=*s;操作,于是a指针与s[0]指针所指向的地址相等。于是这4个变量在内存中的物理位置,以及对应指针所指向的地址和字符串关系如下图:
然后你的for循环中,当i = 0时,取的实际上是a的地址,自然在我电脑中显示的就是“6356732”,读取的内容,当然指向的就是字符串“1”,后面的理解就简单了:
i=1;根据上图也可以发现,实际上(&a)+i所取出的地址是“6356736”,读取的内容,就是s[0]指向的字符串“1”;
i=2;根据上图也可以发现,实际上(&a)+i所取出的地址是“6356740”,读取的内容,就是s[0]指向的字符串“2”;
i=3;根据上图也可以发现,实际上(&a)+i所取出的地址是“6356744”,读取的内容,就是s[0]指向的字符串“3”;
所以才显示结果为1,1,2,3
参考程序如下 再者,如果你的代码中将char *s[3]和char *a的定义的先后顺序换一下(像下面这样),你可以自己试一下,这样就挂了,真的是野指针了。

越界了可以确定,但不是野指针。

不是什么野指针,是没有搞清楚变量在物理内存中的实际位置。按照你的代码,实际上指针变量a以及,s[0],s[1],s[2],s[3]是相邻存放的,一般来说(至少在我的电脑上是这样),先定义的变量存放于高地址,后定义的变量存放于低地址。然后你又有一个a=*s;操作,于是a指针与s[0]指针所指向的地址相等。于是这4个变量在内存中的物理位置,以及对应指针所指向的地址和字符串关系如下图:
然后你的for循环中,当i = 0时,取的实际上是a的地址,自然在我电脑中显示的就是“6356732”,读取的内容,当然指向的就是字符串“1”,后面的理解就简单了:
i=1;根据上图也可以发现,实际上(&a)+i所取出的地址是“6356736”,读取的内容,就是s[0]指向的字符串“1”;
i=2;根据上图也可以发现,实际上(&a)+i所取出的地址是“6356740”,读取的内容,就是s[0]指向的字符串“2”;
i=3;根据上图也可以发现,实际上(&a)+i所取出的地址是“6356744”,读取的内容,就是s[0]指向的字符串“3”;
所以才显示结果为1,1,2,3
参考程序如下 再者,如果你的代码中将char *s[3]和char *a的定义的先后顺序换一下(像下面这样),你可以自己试一下,这样就挂了,真的是野指针了。

越界了可以确定,但不是野指针。
}

原标题:学英语?剑青秋季班教你如何小白变学霸

剑青,是与新概念英语同样受欢迎的英语课程

很多人可能只闻其名,并不真正了解

今天随小编一起走进剑青

感受这门神奇的英语课程吧

良好的语言环境,由老师带领着去了解外国文化,训练听说

听说读写一目了然,单元之间承上启下引导学生预习复习

综合提供语法、句法、语音、知识点和各类考试题型

额外提供跨学科、跨文化整合学习的听说训练、文学选读和歌曲欣赏

江博剑桥系列课程五大特色

除主教材外,配有活动用书、教师用书、故事卡片、单词卡片、互动DVD、教师资源包等,充分满足教学需求。

全英文授课,标准的发音,让孩子学到地道的英语。

设计语音学习模块,采用国际流行的自然拼读进行教学,使发音学习 自然、科学、有趣。

设计跨学科学习模块,涉及科学、地理、音乐、美术、数学等方面,拓宽儿童的眼界,增长知识。

与教材配套的互动学习平台集学习与教学管理功能为一体,充分满足新时代教学需求。

江博剑青名师教学品质保障

声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。

}

我要回帖

更多关于 C语言小白变怪兽下载 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信