A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© Jack-xie 中级黑马   /  2014-9-30 11:17  /  1825 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问题:char *str1 = "boy";
            char str2[5] = "girl";

请问他们之间在取值、打印方面有哪些具体的区别呢?

5 个回复

倒序浏览
本帖最后由 songxing10000 于 2014-9-30 11:43 编辑

打了那么多,居然乱码,少了好多东西,
[size=14.3999996185303px][size=14.3999996185303px]

关于 请问他们之间在取值、打印方面有哪些具体的区别呢?
[size=14.3999996185303px]个人理解(由于在win7下面,未能测试,纯想象,有错请指出,共同学习进步):
[size=14.3999996185303px]一、取值(初始化,再赋值):
  1. //1、初始化
复制代码
二、打印
[size=14.3999996185303px]
  1. //打印char *str1 = "boy";
  2. char *str1 = "boy"; //%s即可

复制代码

好像是差不多了,本来应该测试再发出结果的,但是win7上未能测试,,,有错,请各们指出
回复 使用道具 举报
char *str1 = "boy";表示指针指向‘b’的地址开始读取吧,然后 char str2[5] = "girl";是说明字符串数组容量5,读取‘g’,'i','r','l','\0'.
回复 使用道具 举报
str1  实际是保存 “boy"   字符串的 首地址。 而 石头人  
回复 使用道具 举报
str1  实际 上 是 保存”boy“ 首地址 的变量 。 而 str2  是 保存 数组str【2】 的首地址的常量。 而 对于 取值 都可以使用【】 * 运算符,并且c语言 不检查数组越界。也就是在取值上,,打印上 是没有什么 本质的区别的。  
回复 使用道具 举报
指针用时,最好malloc。用完free
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马