请教

fireyou 2019-10-16 02:45:18
char*p;
p="abcdefghijk";
int test = p;
printf("test = %s", test);

如上代码可正常运行, 请问把 char* 赋值给 int的时候,是怎么处理的?
...全文
74 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
铖邑 2019-10-16
  • 打赏
  • 举报
回复
坛子抽风了,老是提交不上去,哎…… 上面是个简单的程序,只是做个实验,当然现实中不能这么写。 楼主看一下,对于i和s两个参数,push操作其实是一样的,所以关键在于格式串的处理
fireyou 2019-10-16
  • 打赏
  • 举报
回复
十分感谢楼上
铖邑 2019-10-16
  • 打赏
  • 举报
回复
铖邑 2019-10-16
  • 打赏
  • 举报
回复
铖邑 2019-10-16
  • 打赏
  • 举报
回复
没注意看到楼主也是个老伙计了,建议楼主可以看看C程序编译之后的反汇编,就明白了
fireyou 2019-10-16
  • 打赏
  • 举报
回复
谢谢楼上,结贴
铖邑 2019-10-16
  • 打赏
  • 举报
回复
引用 2 楼 fireyou的回复:
那么将一个地址赋值给了int,就可以用打印字符串的方式打印 int了 ?
引用 1 楼 SuperDay 的回复:
char*是一个地址,对于32位应用来说,占用字节跟int一样,本质上也是整数所以可以赋值
只要赋值的时候保证精确性并且该地址确实能对应到一个字符串,是可以这么输出的,这是又要变参函数的特殊性造成的,但是一般不建议这么做除非有什么特殊的用法
fireyou 2019-10-16
  • 打赏
  • 举报
回复
那么将一个地址赋值给了int,就可以用打印字符串的方式打印 int了 ?
引用 1 楼 SuperDay 的回复:
char*是一个地址,对于32位应用来说,占用字节跟int一样,本质上也是整数所以可以赋值
铖邑 2019-10-16
  • 打赏
  • 举报
回复
char*是一个地址,对于32位应用来说,占用字节跟int一样,本质上也是整数所以可以赋值

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧