一个关于C语言指针的问题
#include<stdio.h>intmain(){char*s;s="Helloworld!";printf("%s\n",s);return0;}为什么这个程序是正...
#include<stdio.h>
int main()
{
char *s;
s="Hello world!";
printf("%s\n",s);
return 0;
}
为什么这个程序是正确的,指针不是只能存放地址吗??程序中给s赋的到底是什么呢 展开
int main()
{
char *s;
s="Hello world!";
printf("%s\n",s);
return 0;
}
为什么这个程序是正确的,指针不是只能存放地址吗??程序中给s赋的到底是什么呢 展开
展开全部
“Hello world!"这是字符串常量,其本身存放在常量区.
char *s ; 此条语句表示定义了一个存放字符型地址的指针变量s.
s="Hello world!";此句表示把常量区的“Hello world!"字符串的首地址赋值给s,即存放到变量s里面。
printf("%s\n",s);此句里,%s,表示从s给出的地址开始打印字符串,故输出:Hello world!
char *s ; 此条语句表示定义了一个存放字符型地址的指针变量s.
s="Hello world!";此句表示把常量区的“Hello world!"字符串的首地址赋值给s,即存放到变量s里面。
printf("%s\n",s);此句里,%s,表示从s给出的地址开始打印字符串,故输出:Hello world!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个在部分编译器是错误的.主要是这个s="Hello world!"; 这句如果和定义那句合到一起, 就绝对对了.
其实, char *s="Hello world!";执行完后, 内存中多出来16字节, 其实12字节保存Hello world!字符串, 4字节保存它的首地址, 即H的地址.
如果设置只读字面量池,
char *p = "abcde";
char *q = "abcde";
q和p是相等的.
其实, char *s="Hello world!";执行完后, 内存中多出来16字节, 其实12字节保存Hello world!字符串, 4字节保存它的首地址, 即H的地址.
如果设置只读字面量池,
char *p = "abcde";
char *q = "abcde";
q和p是相等的.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询