关于指针和字符串 急!!!!!!
# include <stdio.h>void main()
{
char *a={"xiaoming"};
printf("%s\n",a);
}
在这段代码中为什么在printf语句中不是*a 呢 ?a不是指针吗 加上一个* 才是取指针所指向的内容呀,也就是xiaoming这个字符串。
运行会出现内存错误说引用的内存不能为“read”但是在printf()语句中改成a了是被读出来了呀。还有一个是不能被“write”这到底是什么意思呀?
还有就是听说字符串是存在数据库中,那么不是字符串存放在那?是不是只有字符串才存在数据库中呀。{:5_99:}
对于字符串"xiaoming",a代表整个字符串,而*a = 'x'(字符),应该用%c输出,这是printf()函数用法,硬编码的字符串存放在进程的数据区,只能读不能写 风之残月 发表于 2014-11-21 18:40
对于字符串"xiaoming",a代表整个字符串,而*a = 'x'(字符),应该用%c输出,这是printf()函数用法,硬编 ...
不能读的那段代码存放在那?不能写的那段代码存放在那?
上面那段代码 printf("%s\n",*a);是这样的话 报错的是 不能读 不是不能“write”
我是不是那里想错了呀 woaini92887 发表于 2014-11-22 12:46
不能读的那段代码存放在那?不能写的那段代码存放在那?
上面那段代码 printf("%s\n",*a);是这样的话 报 ...
“%s”是用来输出字符串的
"%c"是用来输出字符的
*a是字符,要用%c来输出,如果用"%s"来输出,就会把*a的ascii值(也就是'x')作为字符串的首地址来打印,将会产生不可预知的结果。 woaini92887 发表于 2014-11-22 12:46
不能读的那段代码存放在那?不能写的那段代码存放在那?
上面那段代码 printf("%s\n",*a);是这样的话 报 ...
不能读的代码不存在,因为没有任何意义,代码不能读还用它干什么,建议楼主去看下进程、文件结构方面的内容 风之残月 发表于 2014-11-22 13:00
不能读的代码不存在,因为没有任何意义,代码不能读还用它干什么,建议楼主去看下进程、文件结构方面的内 ...
嗯嗯 谢谢 我再研究研究
{:5_91:}
页:
[1]