LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 730|回复: 7

##帮我看看,好奇怪的c语句##

[复制链接]
发表于 2003-7-24 09:48:34 | 显示全部楼层 |阅读模式

  1. #include <stdio.h>

  2. #define MY_NAME "hello world"
  3. main()
  4. {
  5. void *value;
  6. *((char **)value) = MY_NAME;
  7. // printf("%s\n",value);
  8. }
复制代码

那个printf语句要怎么写才能打印出value???
发表于 2003-7-24 10:25:57 | 显示全部楼层

  1. #include <stdio.h>

  2. #define MY_NAME "hello world"
  3. main()
  4. {
  5.         void *value;
  6.          *((char **)value) = MY_NAME;
  7.          printf("%s\n",*(char**)value);
  8. }

复制代码
 楼主| 发表于 2003-7-24 10:38:50 | 显示全部楼层
谢谢
发表于 2003-7-24 12:42:41 | 显示全部楼层
用printf("%s\n",(char *[ ] )value);
printf("%s\n",*(char**)value);不对吧?
*(char**)value前面的*不要.这里用一个指针来指字符串,
而不是用一个道字符.
 楼主| 发表于 2003-7-24 13:04:45 | 显示全部楼层
要那个*号
发表于 2003-7-24 13:11:02 | 显示全部楼层
最初由 Andy84920 发表
用printf("%s\n",(char *[ ] )value);
printf("%s\n",*(char**)value);不对吧?
*(char**)value前面的*不要.这里用一个指针来指字符串,
而不是用一个道字符.


1.你的那个是通不过编译的。
2.我的那个是对的。
因为value已经转化成了char**,而字符串是const char *型,所以就必须用*(char **).
发表于 2003-7-24 14:55:09 | 显示全部楼层
看来是这样的,但都不行啊。
 楼主| 发表于 2003-7-24 15:54:15 | 显示全部楼层
按pupilzeng写的可以呀,我试过,没问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表