免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: pcbit
打印 上一主题 下一主题

菜鸟关于C的一个问题?解决了 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-12-18 15:51 |只看该作者
原帖由 ruoyisiyu 于 2007-12-18 15:38 发表
>>>>我能确定 *s =='c'
>>>>  用*运算符不就说明s是个指针(常量或者变量)吗?

那对于指针同样可以下标操作,难道我们就可以说指针就是数组,数组等同于指针么


你说的也有道理

不过如果s不做函数参数传递的时候是什么呢?常量?变量?

论坛徽章:
0
12 [报告]
发表于 2007-12-18 15:52 |只看该作者
原帖由 foolishx 于 2007-12-18 15:49 发表
太多人不求甚解了。看来离精通之道渐行渐远啊。


还请您让我们甚是了解一番,好么?

仔细看了一下,你在二楼的回答错了一半,

[ 本帖最后由 pcbit 于 2007-12-19 16:22 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2007-12-18 16:01 |只看该作者
常量或变量的内容是它的值:
char s[]="china"; //s的值是"china"
char *p=s; //p的值是变量s的首地址
注意这里s本身并不是常量,所以char s[]="china"; 实际上是把常量串赋值给s

[ 本帖最后由 Wind-Son 于 2007-12-18 16:02 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2007-12-18 16:11 |只看该作者
原帖由 pcbit 于 2007-12-18 15:51 发表


你说的也有道理

不过如果s不做函数参数传递的时候是什么呢?常量?变量?

s是数组名,但不能作左值,所以也就不是变量;
在声明一个数组时,编译器将根据指定的数组元素的数量来为数组分配空间,然后再创建数组名。数组名的值是一个常量,指向之前分配的空间的起始位置。因此*s是完全合法的,但是正如前面所说他不是变量,因此也就不能做变量的相关运算

论坛徽章:
0
15 [报告]
发表于 2007-12-18 16:14 |只看该作者
原帖由 Wind-Son 于 2007-12-18 16:01 发表
常量或变量的内容是它的值:
char s[]="china"; //s的值是"china"
char *p=s; //p的值是变量s的首地址
注意这里s本身并不是常量,所以char s[]="china"; 实际上是把常量串赋值给s


如果按照你所说,“常量或变量的内容是它的值”来解释这道题,我大概就明白了,
不过出现了新的问题,就是:C中没有“字符串”类型的变量或者常量,又怎么会有值是个字符串的变量或常量呢?
可以说字符数组的值是个字符串么?可能对,但是怎么感觉怪怪的,我可能是走火入魔了,哈哈哈

论坛徽章:
0
16 [报告]
发表于 2007-12-18 16:18 |只看该作者
佩服楼主的执着,不过有时候碰到一些问题的时候,不用着急一下子就想解决掉问题,多学习,过一段时间之后再来看看这个问题,可能就豁然开朗了。

论坛徽章:
0
17 [报告]
发表于 2007-12-18 16:20 |只看该作者
字符型数组不就是字符串型的变量么?不要想得太复杂

论坛徽章:
0
18 [报告]
发表于 2007-12-18 16:21 |只看该作者
原帖由 ruoyisiyu 于 2007-12-18 16:11 发表

s是数组名,但不能作左值,所以也就不是变量;
在声明一个数组时,编译器将根据指定的数组元素的数量来为数组分配空间,然后再创建数组名。数组名的值是一个常量,指向之前分配的空间的起始位置。因此*s是完 ...



我在5楼最后也说s是个常量,并没有说它是个变量,
如你所说:“数组名的值是一个常量,指向之前分配的空间的起始位置”
那么经过char *p=s;之后,p和s一样,也指向之前分配的空间的起始位置。
p和s的内容不就一样了么? 那么答案A也正确喽?

论坛徽章:
0
19 [报告]
发表于 2007-12-18 16:24 |只看该作者
我倒

论坛徽章:
0
20 [报告]
发表于 2007-12-18 16:25 |只看该作者
原帖由 pcbit 于 2007-12-18 16:21 发表



我在5楼最后也说s是个常量,并没有说它是个变量,
如你所说:“数组名的值是一个常量,指向之前分配的空间的起始位置”
那么经过char *p=s;之后,p和s一样,也指向之前分配的空间的起始位置。
p和s的内 ...

s不等同于s[0]:em11: :em11:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP