免费注册 查看新帖 |

Chinaunix

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

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

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

s不等同于s[0]:em11: :em11:


别抓狂,呵呵,我知道s不等于s[0],s[0]是字符c
我现在明白了我只是困在了"s的内容"之内容这两个字上了,

下面是我的程序
main()
{
char s[]="china";
char *p=s;
printf("s=%ld, &s=%ld, p=%d, &p=%ld",s,&s,p,&p);

}


运行结果:
  1. s=1079971558, &s=1079971558, p=1079971558, &p=1079971552
复制代码

我把问题简化了,
您就告诉我 "s的内容"是什么就行,别的让我自己领悟,别把您气病了,那我罪过可大了
A.是-1079971558 (在程序运行其间)
B.是字符c
C.是字符串china

您的答案:_______


再次表示由衷的感谢!!

[ 本帖最后由 pcbit 于 2007-12-18 17:18 编辑 ]

论坛徽章:
0
22 [报告]
发表于 2007-12-18 16:47 |只看该作者
看看书上是怎么说的:
C语言规定,数组名代表数组的首地址,也就是第0号元素的地址。
p,s,&s[0]均指向同一单元,它们是数组s的首地址,也是0 号元素s[0]的首地址。应该说明的是p是变量(当p++后,p就是第1号元素的地址),而s,&s[0]都是常量
p++是合法的;而s++是错误的

论坛徽章:
0
23 [报告]
发表于 2007-12-18 16:47 |只看该作者
早就给你说过了, 它的内容就是整个数组

原帖由 pcbit 于 2007-12-18 16:40 发表


别抓狂,呵呵,我知道s不等于s[0],s[0]是字符c
我现在明白了我只是困在了"s的内容"之内容这两个字上了,

下面是我的程序
main()
{
char s[]="china";
char *p=s;
printf("s=%ld, &s=%ld, p=%d, &p ...

论坛徽章:
0
24 [报告]
发表于 2007-12-18 16:50 |只看该作者
原帖由 ypxing 于 2007-12-18 16:47 发表
早就给你说过了, 它的内容就是整个数组


  

不按格式答题,答案无效!!!



哈哈,谢谢!!!

论坛徽章:
0
25 [报告]
发表于 2007-12-18 16:52 |只看该作者
原帖由 xi2008wang 于 2007-12-18 16:47 发表
看看书上是怎么说的:
C语言规定,数组名代表数组的首地址,也就是第0号元素的地址。
p,s,&s[0]均指向同一单元,它们是数组s的首地址,也是0 号元素s[0]的首地址。应该说明的是p是变量(当p++后,p就是第1号元素 ...



是的 ,没人说他们是变量,至少我没说过。

论坛徽章:
0
26 [报告]
发表于 2007-12-18 16:56 |只看该作者
不看c四书五经的后果,相当的严重啊!!!

论坛徽章:
0
27 [报告]
发表于 2007-12-18 17:07 |只看该作者
原帖由 ruoyisiyu 于 2007-12-18 16:56 发表
不看c四书五经的后果,相当的严重啊!!!


呵呵,没你说的那么严重啦

其实你不觉得
s的内容和p的内容相同这句有点岐义吗?
它比数组s的内容和p的内容相同更能准确的表达一个意思么?(当然这句话是错的)

如果你说它们表达的是完全相同的意思,
那么在我上面的代码中

除了指针p之外,另一个内容是1079971558的东西是谁??

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

论坛徽章:
0
28 [报告]
发表于 2007-12-18 17:10 |只看该作者
没觉得.
s本来就是数组, 根本就不需要强调

原帖由 pcbit 于 2007-12-18 17:07 发表


呵呵,没你说的那么严重啦

其实你不觉得
s的内容和p的内容相同这句有点岐义吗?
它比数组s的内容和p的内容相同更能准确的表达一个意思么?

如果你说它们表达的是完全相同的意思,
那么在我上面的代 ...

论坛徽章:
0
29 [报告]
发表于 2007-12-18 17:11 |只看该作者
原帖由 ypxing 于 2007-12-18 17:10 发表
没觉得.
s本来就是数组, 根本就不需要强调


好吧,如你所说s本来就是数组,不需强调,它的内容是china,

那么除了指针p之外,有没有另一个内容是1079971558的东西?
如果你说有,那是不是证明了 需要在s前面加“数组”两个字强调一下

如果你说没有,那输出的s=1079971558 做何解释呢?

[ 本帖最后由 pcbit 于 2007-12-18 17:24 编辑 ]

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

除了指针p之外,另一个内容是-1079971558的东西是谁??

那不就是s数组的首地址么,你用了有符号型就成负的了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP