
有没有大lao知道为什么第一个箭头用两个星号第二箭头处用一个星号,求解答。
因为pv原本是void *
而第一个是因为pv=pi,而pi里放的是int型数的1024的地址,所以要转成对应的(int * )这就表示拿到了1024的地址,然后 * 即可输出1024。
第二个同理,(char *) 是拿到了 "FishC" 是可以直接打印的。因为printf语句打印%s的时候,printf语句要求提供字符串地址即可。
“Devil组”引证GPT后的撰写:
- 这是因为第一个箭头所指向的是指向int类型的指针变量pi,因此使用两个星号解引用可以得到指针所指向的整数值。而第二个箭头所指向的是指向char类型的指针变量ps,因此使用一个星号解引用可以得到指针所指向的字符串值。
- 具体来说,第一段代码中,首先声明了一个int类型的变量num,并将其赋值为1024。然后声明了一个指向int类型的指针变量pi,并将其指向num的地址。接着声明了一个指向char类型的指针变量ps,并将其指向字符串常量"FishC"的地址。最后声明了一个void类型的指针变量pv。
- 接下来,将pv指向pi所指向的地址,并使用两个星号解引用pv指针,得到指针所指向的整数值。然后将pv指向ps所指向的地址,并使用一个星号解引用pv指针,得到指针所指向的字符串值。
- 第二段代码与第一段类似,只不过在输出pv所指向的字符串值时,少了一个引号。
不知道你这个问题是否已经解决, 如果还没有解决的话:
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^