题目:请问以下例1和例2的str有什么区别?
例1:
#include <stdio.h> int main(int argc,char **argv) { char str[]={'h','e','l','l','o',',','w','o','r','d'}; printf("%s\n",str); }
例2:
#include <stdio.h> int main(int argc,char **argv) { char *str="hello,word"; printf("%s\n",str); }
解析:
术语:
例1字符串数组,例2字符串指针
关键点:
例1、例2的str和helloword在哪里,这个答道位就可
例1:
一、程序执行到main后,
1.1、str变量处于栈空间(本质上它是char [10]类型),占空间4个字节(默认32位机器)
1.2、栈中分配数组,数组大小为11个字节
1.3、str所指向的内容就是数组头,数组头地址赋值给str变量
1.4、数组容纳数据量的大小为11个字节
1.5、数组容纳数据内容目前是未知的
1.6、引申:能修改str所指向的内容
二、程序执行到4行后,
2.1、str所指向的数组才会有内容
例2:
程序执行到main后,
1.1、str处于栈空间(本质上它是char *类型),占空间4个字节(默认32位机器)
1.2、str所指向的内容未知的
二、程序执行到4行后
2.1、str才会有内容
2.2、"hello,word"在只读文本段中,代码执行到此后进行赋值动作
2.3、引申:不能修改str所指向的内容
得分点:
1、术语(占30分)
只是入门款对知识点知道,不能抓住考官的心,
2、本质
考官一般基于这个问题再深入问下去,考官希望通过一个小点,来看你对以下内容的理解:
变量读写的属性(又加30分)
静态的可执行程序与运行时程序的差异(再加30分)
tips:
c是一个把兰州拉面厨师的手中的切牛肉的刀,用的好食客会看到很多片牛肉(但是其实分量草鸡小),用的差食客碗里都是牛肉块了。
c语言并不是给新人用来工作的,是给专家来使用的,所以学习c是一个相对漫长的过程,市面上写的《一周学会》、《一月学会》等等书籍,看着也是让人深思,这也是一种误导。
c语言本质上就是简洁的,它伴随unix一起被人创造出来,高傲的简洁性能造就了它本质深奥的源泉。
c语言可能是学校的第一门编成语言,谭老师的书可能让你觉得心灰意冷,但是c的绝妙之处绝对不是在书上,也不是在各种视频、文章里面,而是在目前千千万的小智能设备上,他是盖起计算机世界的钢筋水泥。大概码农也是这么来的。
以上可能就是你踏入工地后,收到c语言暴击后的见面礼。