void指针和NULL指针
#include"stdio.h"main()
{
int num=1024,*pi=#
char *ps="FishC";
void *pv;
pv=pi;
printf("pi:%p,pv:%p\n",pi,pv);
printf("pv:%d\n",*(int *)pv);
ps=(char *)pv;
pv=ps;
printf("ps:%p,pv:%p\n",ps,pv);
printf("pv=%s\n",(char *)pv);
}
小甲鱼视频里面这个pv指向的字符串输出不了是为什么 你第四行*pi=#这里是咋想的 本帖最后由 大马强 于 2020-4-5 17:46 编辑
#include"stdio.h" //不应该是<stdio.h>
main() //漏了 int
{
int num=1024,*pi=# //*pi?
char *ps="FishC";
void *pv; //void?你应该是想写char吧
pv=pi;
printf("pi:%p,pv:%p\n",pi,pv);
printf("pv:%d\n",*(int *)pv);
ps=(char *)pv;
pv=ps;
printf("ps:%p,pv:%p\n",ps,pv);
printf("pv=%s\n",(char *)pv);
//漏写return 0;
}
看看改后可以不 墨羽岚 发表于 2020-4-5 17:34
你第四行*pi=#这里是咋想的
这个地方打错了是 *pi=# 大马强 发表于 2020-4-5 17:45
#include"stdio.h" //不应该是
main() //漏了 int
{
这是甲鱼视频里讲的一个,最后一个printf不能输出。然后他在视频里没说为什么 萌新大胆猜测:{:10_266:}大概是因为整型用字符型输出不了? 本帖最后由 李京 于 2021-2-10 21:19 编辑
#include"stdio.h"
main()
{
int num=0x005678,*pi=#
char *ps="FishC";
void *pv;
pv=pi;
printf("pi:%p,pv:%p\n",pi,pv);
printf("pv:%d\n",*(int *)pv);
ps=(char *)pv;
pv=ps;
printf("ps:%p,pv:%p\n",ps,pv);
printf("pv=%s\n",(char *)pv);//这里会打印xV
}
ps=(char *)pv;
}
这里pv原本是int类型的,你强制变成了char类型跨度不一样了 num的值原本是用4个字节存放的,想在变成了1个字节,数值就不一样了,改变num的值,打印的也不一样
在dev-c++上实验了,你如果把num的值变成0x005678就打印xVx的ASCII码是1200x78变成10进制就是120 李京 发表于 2021-2-10 21:08
这里pv原本是int类型的,你强制变成了char类型跨度不一样了 num的值原本是用4个字节存放的,想在变成了 ...
具体怎么存放,可以看一下这一篇
小端和大端(有彩蛋)
https://fishc.com.cn/thread-75394-1-1.html
(出处: 鱼C论坛)
页:
[1]