char *s1="Hello";和char s2[]="Hello";以及char s3[]={'H','e','l','l','o','\0'};区别?
发布网友
发布时间:2022-05-08 00:53
我来回答
共3个回答
热心网友
时间:2023-11-22 19:17
你好:
让我来深入浅出的回答这个问题,让你能彻底明白的;
(1)"hello"是什么?
它是一个字符串常量,注意字符串在c语言中是没有变量一说的,
(2)"hello"在内存中如何存放?
它象一般的数组一样,没每一个内存小格子存放一个字母,这样顺序排下来,很显然字母h就是头
(3)char *s 是什么?
很显然它就是一个指针变量,这个s就是用来存放字符地址的,在我们这里,它就存放了字符h的内存地址!!也就是这个字符串的首地址。
(4)有了这个首地址我们输出的时候,首先找到首地址,然后依次读出后面的字符,直到遇到'\0'结束,所以你可想而知,这个字符串的长度就是6,因为系统自动加上了‘\0'
(5)char s2[]="hello"是什么?
它就是一个名字是s2的字符数组,存放了h,e,l,l,o,这5个字符,很显然它的长度是5,这也正是和前者的区别所在.
呵呵,打完收工
祝你好运!
热心网友
时间:2023-11-22 19:17
你好:
让我来深入浅出的回答这个问题,让你能彻底明白的;
(1)"hello"是什么?
它是一个字符串常量,注意字符串在c语言中是没有变量一说的,
(2)"hello"在内存中如何存放?
它象一般的数组一样,没每一个内存小格子存放一个字母,这样顺序排下来,很显然字母h就是头
(3)char *s 是什么?
很显然它就是一个指针变量,这个s就是用来存放字符地址的,在我们这里,它就存放了字符h的内存地址!!也就是这个字符串的首地址。
(4)有了这个首地址我们输出的时候,首先找到首地址,然后依次读出后面的字符,直到遇到'\0'结束,所以你可想而知,这个字符串的长度就是6,因为系统自动加上了‘\0'
(5)char s2[]="hello"是什么?
它就是一个名字是s2的字符数组,存放了h,e,l,l,o,这5个字符,很显然它的长度是5,这也正是和前者的区别所在.
呵呵,打完收工
祝你好运!
热心网友
时间:2023-11-22 19:18
char *s1="Hello"这个是指针的,指针s1指向H的地址,后面两个可以说是完全一样的意思,只是方式不同追问谢谢,不过,我要的是比较深层次的回答,关于内存方面的。
追答指针存放的内存地址是可以变的,而数组是静态的,至于到底放在哪里,这个就不知道了
热心网友
时间:2023-11-22 19:17
你好:
让我来深入浅出的回答这个问题,让你能彻底明白的;
(1)"hello"是什么?
它是一个字符串常量,注意字符串在c语言中是没有变量一说的,
(2)"hello"在内存中如何存放?
它象一般的数组一样,没每一个内存小格子存放一个字母,这样顺序排下来,很显然字母h就是头
(3)char *s 是什么?
很显然它就是一个指针变量,这个s就是用来存放字符地址的,在我们这里,它就存放了字符h的内存地址!!也就是这个字符串的首地址。
(4)有了这个首地址我们输出的时候,首先找到首地址,然后依次读出后面的字符,直到遇到'\0'结束,所以你可想而知,这个字符串的长度就是6,因为系统自动加上了‘\0'
(5)char s2[]="hello"是什么?
它就是一个名字是s2的字符数组,存放了h,e,l,l,o,这5个字符,很显然它的长度是5,这也正是和前者的区别所在.
呵呵,打完收工
祝你好运!
热心网友
时间:2023-11-22 19:18
char *s1="Hello"这个是指针的,指针s1指向H的地址,后面两个可以说是完全一样的意思,只是方式不同追问谢谢,不过,我要的是比较深层次的回答,关于内存方面的。
追答指针存放的内存地址是可以变的,而数组是静态的,至于到底放在哪里,这个就不知道了
热心网友
时间:2023-11-22 19:18
s2和s3没有区别,s1的内容是不可更改的。仅此而已……
热心网友
时间:2023-11-22 19:18
s2和s3没有区别,s1的内容是不可更改的。仅此而已……
热心网友
时间:2023-11-22 19:18
char *s1="Hello"这个是指针的,指针s1指向H的地址,后面两个可以说是完全一样的意思,只是方式不同追问谢谢,不过,我要的是比较深层次的回答,关于内存方面的。
追答指针存放的内存地址是可以变的,而数组是静态的,至于到底放在哪里,这个就不知道了
热心网友
时间:2023-11-22 19:18
s2和s3没有区别,s1的内容是不可更改的。仅此而已……