| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1268 人关注过本帖
标题:[讨论]请你给出运行结果,并说明原因
只看楼主 加入收藏
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
memory address

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-07-18 11:00
aiyuheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:656
专家分:0
注 册:2006-1-12
收藏
得分:0 
我不太明白
printf("%d\n", strlen( c ) );
不是测试c的长度吗??10??为什么是随机??
printf("%d\n", x);跟c有什么关系??不是跟这句有关吗???int x=10;

when i want to ask anyone,i will ask myself first.
2006-07-18 11:01
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
我不太明白
printf("%d\n", strlen( c ) );
不是测试c的长度吗??10??为什么是随机??
printf("%d\n", x);跟c有什么关系??不是跟这句有关吗???int x=10;

====>
sizeof(c) equal 10

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-07-18 11:05
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
以下是引用论坛在2006-7-18 11:00:46的发言:
memory address


你的意思是输出的内存地址???可是它的数据和COPY的一样呀!


人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-07-18 11:05
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
after copy string, maybe used x memory address

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-07-18 11:10
aiyuheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:656
专家分:0
注 册:2006-1-12
收藏
得分:0 
以下是引用论坛在2006-7-18 11:05:01的发言:
我不太明白

printf("%d\n", strlen( c ) );

不是测试c的长度吗??10??为什么是随机??

printf("%d\n", x);跟c有什么关系??不是跟这句有关吗???int x=10;


====>

sizeof(c) equal 10

明白了 记起来了 就是在c没负值的情况下strlen(c)是随机的是吗??


when i want to ask anyone,i will ask myself first.
2006-07-18 11:11
★红狼
Rank: 2
等 级:论坛游民
帖 子:190
专家分:17
注 册:2006-7-12
收藏
得分:0 
以下是引用wangsong在2006-7-17 21:08:38的发言:

#include<stdio.h>
#include<string.h>

int main()
{
int x = 10;
char c[10];
printf("%d\n", strlen( c ) );
strcpy( c, "1234567890987" );
printf("%d\n", x);

return 0;
}

我没试,我等下试下。
我猜 strlen(c) 的结果是 9;
x的结果 是10;
经过 strcpy(c,"1234567890987")后。c="123456789"
不知道对不对

2006-07-18 11:13
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 
以下是引用穆扬在2006-7-18 6:45:51的发言:

最严重的问题是
strcpy( c, "1234567890987" );
由于这个极其严重的错误
使得
printf("%d\n", x);
也无法确定有确定的输出


正解!
因为给字符数组c赋值的长度超过定义的长度 所以会存储时影响内存空间的分配 可能连x的空间也会占用
所以sizeof(c)是一个不确定的值,x的值当然也会变,就不一定是10了


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-07-18 11:21
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-18 11:44
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-18 11:47
快速回复:[讨论]请你给出运行结果,并说明原因
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015488 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved