一个小问题
c语言吧
全部回复
仅看楼主
level 5
真实还是幻想
楼主
int a = "hello" ;
int*p=a;
是在p为栈区的空间名为a,空间内容为hello的空间地址。那么
int *p="hello"
定义之后是在常量区开辟了一个内容为hello的空间吗?
2021年05月10日 13点05分
1
level 5
真实还是幻想
楼主
常量区的常量该如何理解?
2021年05月10日 13点05分
2
level 14
🍀草酱🍀
这样写,正常的编译器都会报错误或警告
2021年05月10日 13点05分
3
真实还是幻想
打错了,将int换为char
2021年05月10日 13点05分
level 5
真实还是幻想
楼主
描述有误,将int换为char
2021年05月10日 13点05分
4
level 14
🍀草酱🍀
两种写法没有什么区别,常量的内存是在main函数执行前就已经分配好了。而char *p只是指向了这个字符数组的首地址
2021年05月10日 13点05分
5
真实还是幻想
我不是计算机专业的,好多计算机运行原理之类细节不懂,我想问一下既然常量的内存是已经分配好的内存,那么hello在内存中的形式是什么样的? 1.如果是连续的,像数组那样,系统怎么知道你要用hello,正好给把这几个常量字符给你分一块。 2.如果不是连续的,那么怎么可以通过指针输出字符串呢?
2021年05月10日 13点05分
🍀草酱🍀
@真实还是幻想
hello不是像数组那样,它就是数组,字符串不是什么特别的类型就是一个char数组,只不过这里是常量数组
2021年05月10日 13点05分
真实还是幻想
@🍀草酱🍀
我知道是个数组,但我还不理解,我愿以为常量区里边的东西都是数字以及单个的字符之类,不能更改,现在hello也是个常量,我就搞不懂了
2021年05月10日 14点05分
🍀草酱🍀
@真实还是幻想
任何东西都可以是常量,整形,字符,指针,整型数组,结构体数组,指针数组等等
2021年05月10日 14点05分
level 12
一周休七日
就跟文件一样,从第几行至第几行放什么,又从第几行到第几行放什么。。。
char *a = "hello";
char *b = "world";
char *c = "abcdefghijk...";
第一行放几个字符hello\0
第x行放几个字符world\0
char *a=第一行
char *b=第x行
ps:用"行"只是为了方便理解…
2021年05月10日 14点05分
6
level 7
l394554431
这里提问感觉效率不高啊,真心建议你可以直接去一些C语言的答疑君羊去问,里面应该挺多大神可以回答问题。
我是初学者,推荐你一个我平常用的吧,很多问题都是在里面解决的
2021年05月11日 03点05分
7
1