我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

lvdou





性别: 帅哥 状态: 该用户目前不在线
等级: 希望之光
家族: YD一族
发贴: 1930
威望: 0
浮云: 1181
在线等级:
注册时间: 2006-04-01
最后登陆: 2008-06-21

5come5帮你背单词 [ physiology // n. 生理学 ]


来个题

好久没编程了,给大家出个题
  #include <stdio.h>
  void main(void)
  {
    char *message[] = {"Hello ", "World"};
    int i;

    for(i = 0; i < 2; i++)
      printf("%s", message);
    printf("\n");
  }

结果将是什么?为什么?
顶端 Posted: 2007-11-02 16:00 | [楼 主]
zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ coin /koin/ n. 硬币 ]


是乱码哈
Copy code
printf("xxxxxx", YYY, ZZZ)

printf传参的时候是直接把 YYY和ZZZ的值压栈(不考虑优化)
message实际上是一个指针,是占了内存空间的,他指向的内存里放的是 "Hello" 的地址(只读数据区)。
So,  当调用
Copy code
printf("%s", message)

输出的就是message指向的内存位置里的值(以ASCII码方式输出,地址递增,遇到0为止或访问到非法位置)
GG可以调试的时候看下内存,验证一下


[ 此贴被zhd32在2007-11-05 21:42重新编辑 ]
顶端 Posted: 2007-11-04 10:22 | [1 楼]
zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ toxic /'toksik/ a. 有毒的,中毒的 ]


Quote:
引用第18楼再不斩于2007-11-05 20:23发表的  :
楼主的那个"Hello "那个空格未知不知设置了个什么字符。。。
所以打印出来是乱码哦。

GG试一下就知道了哈
乱码是肯定的
只是不是由于 设置了个什么字符 而引起的
顶端 Posted: 2007-11-05 21:38 | [2 楼]
zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ distance /'distəns/ n. 距离 ]


Quote:
引用第22楼落叶清风于2007-11-06 22:22发表的  :
应该是一堆乱码,乱码的内容是message指向地址的ASCII码表示

对头
顶端 Posted: 2007-11-07 11:13 | [3 楼]
zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ outbreak /'autbreik/ n. 爆发,反抗,暴动 ]


Quote:
引用第21楼俺们都是兄弟于2007-11-06 22:16发表的  :

gege对printf的研究源于: ???

printf:
00401080  push        ebp
.......

C传递参数本质上都是传值(包括指针)。。。
顶端 Posted: 2007-11-07 13:47 | [4 楼]
zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ grandparent /'grændperənt/ n. (外)祖父(母) ]


Quote:
引用第26楼爱-就要浪漫于2007-11-07 13:52发表的  :
高人阿
答案是显示不出来

一般都有显示的,除非RP很好
顶端 Posted: 2007-11-07 16:29 | [5 楼]
zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ then /ðen/ n. 当时,在那时,然后,后来,那么,就 ]


可以说是随机,又不能叫随机
顶端 Posted: 2007-11-12 23:29 | [6 楼]
zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ musical /'mju:zikəl/ a. 音乐的,悦耳的,有音乐才能的;n. 音乐喜剧,(电影)音乐片 ]


[quote]引用第31楼k哥于2007-11-13 12:53发表的  :
Copy code
main()
{
  char *a="Hello,World";
    printf("%s",a);
.......[/quote]
这个传递的也是 a 的值,也就是 Hello,World 的地址
类似于
[code]
int
puts(const char *pc) {
    int length = 0;
   
    while (*pc != '\0') {
        put(*pc);
        length++;
    }

    return (length);
}
顶端 Posted: 2007-11-13 18:42 | [7 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.008335(s) query 6, Time now is:11-22 16:44, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号