字符数组名,无名字符串和字符指针有什么区别?
定义:
char ch[10];
char ch2[];
char* str;
以及"string"。
1.全局的变量和函数内的static变量,存放在内存堆区域。
2.全局的数组和函数内定义的static的数组,存放在内存堆区域。
3.局部变量,数组,存放在内存的栈区域。
4.定义char ch[10]时,如果是全局或者static的,就在堆区域给他分配10byte的空间,并且如果用户没有给它初值,10byte数据全部置零。
5.定义char ch[10]时,如果是局部数组(在函数内定义且不是static的),则在栈区域分配10byte的空间,如果用户没有给它初值,10byte的数据未知,为内存中原来的不确定数据。
6.定义char * str时,给str分配一个4byte的空间,用于保存一个地址。该地址可以指向任意地方。如果没有给它初值,则其中数据是该片内存原来的数据,所以会指向一个不确定的地方,这时候如果对该指针指向的地方赋值,可能会因破坏未知地址内存数据,造成系统崩溃。
7.“string”在代码中出现时,自动分配空间,在内存中的存放是string\0,占用7个byte. “string”本身可以作为一个地址来看,该地址就是s字母所在的内存位置。
8.str=“string”是: 开始已经定义了一个char 指针str,且没指向任何地方。 该语句,把一个string字符串加上\0结束符存放在内存中,并且把该字符串的地址,也就是s的地址,即“string”给str,使str指向“string”所在的空间。
9.ch=“string”是不对的。 ch是一个数组。数组名虽然也就是数组第一个元素的地址。与指针有相似的地方。但是指针可以指向任意的地方。数组一旦定义,其地址就是固定的,数组名ch所指向的地方就只能是ch[0]的地址,是不能够修改的,不能够再指向其他的地方了。 这里可以理解为系统给ch数组分配了一段10byte的空间。“string”也有另一段7byte的空间,但是ch是不能重新指向“string”所在的地方的。
10.str=NULL同第8项。 str定以后,指向未知区域。 后面可以把str指向一个有效区域或者一个NULL区域。最好在定义的时候就给它指向NULL区域,以免出现第6项中的崩溃问题。在使用str的时候,再给它一个有效地址,如第8项中的赋值。
11.ch=NULL同第9项。ch作为数组名,内存是在定义时就分配好的。不能再指向其他地方,或者NULL。
12.在定义并初始化 char *str时,可以char *str=ch,数组ch的起始地址,给str,把该地址存放在str所在的4byte空间中。
12.在定义之后,赋值时,str= 是把作为一个地址,给到str,存放在str所在的4byte的内存空间,如第6项。所以会出现类似str=ch2,或者str=“string”,这个语句的作用是让str指向其他的地址。另不能出现str=12等现象,因为12做作为一个地址,在内存中的数据是程序员不知道的,万一该地址的数据被修改了,会破坏系统数据,造成未知问题。
13.*str= 是把作为一个字符,给到*str,存放在str所指向的地址内存空间。该语句的作用是改变str所指向的空间内所存储的值,而不会改变str所指向的地方。例如char *str=“string”; *str=‘F’,则以%s格式打印出str后,输出为Ftring。另%s格式输出,会一str所指向的地址开始,一直输出到\0结束。
14.=*str,是把str所指向的地址的数据,赋值给。 例如如果str指向“string”, 则char c=*str的作用等同于char c=‘s’。
15.ch为数组名,其指向的地方不能改变,但其指向的地方的内容可以改变。如ch=不对。但是ch[0]='W'是正确的。
16.str是指针,指针本身占有4byte的存储空间,该空间内存储了一个数据,该数据是内存中其他地方的地址。所以可以通过修改该数据,来使str指向其他的地址,如第12项。也可以通过*str来修改str所指向的地址内所存储的数据,如第13条。
17.“string”是一个地址。该地址就是s字母所在的地址。他可以作为一个地址赋值给指针,如str=“string”(在指针str定义,并初始化时,可以char *str=“string”格式。)
18.ch的固定性,你可以把ch 按照 char * const ch理解。即ch指向的地址不能变。但ch指向地址内的数据可以变。
左联先后创办的机关刊物有《萌芽月刊》、《拓荒者》(二刊系接办)、《巴尔底山》、《世界文化》、《前哨》(第2期起改名为《文学导报》)、《北斗》、《十字街头》、《文学》、《文艺群众》、《文学月报》、《文学新地》等等;还秘密发行了《秘书处消息》和《文学生活》;并在《时事新报》副刊《青光》主办《每周文学》。另外有外围刊物《文艺新闻》。北平左联机关刊物有《文学杂志》、《文艺月报》等。东京分盟办有《东流》、《新诗歌》、《杂文》(后改名《质文》)。左联盟员以个人名义编辑的刊物有《无名文艺》(叶紫、陈企霞)、《文艺》(周文、刘丹)、《春光》(庄启东、陈君治)、《中华日报》副刊《动向》(聂绀弩)、《译文》(鲁迅,后为黄源)、《太白》(陈望道)、《新小说》(郑君平,即郑伯奇)等。左联领导的中国诗歌会有会刊《新诗歌》。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!