C编程-指针
我遇到了以下代码,其输出为0 语句C编程-指针,c,C,我遇到了以下代码,其输出为0 语句vptr=&i正确吗?我们可以分配一个void指针,一个整数变量的地址吗 #include<stdio.h> void fun(void *p); int i; int main() { void *vptr; vptr = &i; fun(vptr); return 0; } void fun(void *p) { int **q; q = (int**)&p; print
vptr=&i
正确吗?我们可以分配一个void
指针,一个整数变量的地址吗
#include<stdio.h>
void fun(void *p);
int i;
int main()
{
void *vptr;
vptr = &i;
fun(vptr);
return 0;
}
void fun(void *p)
{
int **q;
q = (int**)&p;
printf("%d\n", **q);
}
#包括
虚无乐趣(虚无*p);
int i;
int main()
{
void*vptr;
vptr=&i;
乐趣(vptr);
返回0;
}
虚空乐趣(虚空*p)
{
int**q;
q=(国际**)和p;
printf(“%d\n”,**q);
}
语句vptr=&i代码>很好
然而,语句q=(int**)&p代码>不正确<代码>&p
不指向int*
,而是指向void*
。不能保证int*
和void*
具有兼容的布局
fun
的正确实现是
void fun(void *p)
{
printf("%d\n", *(int*)p);
}
任何指针类型都可以转换为void*
。
从:
指向void的指针可以转换为指向任何对象的指针,也可以转换为指向任何对象的指针
类型。指向任何对象类型的指针都可以转换为指向
虚空又回来;结果应与原始结果进行比较
指针
定义“正确”。语法?语义学?用法?行为?实践?空指针可以被分配任何东西的内存地址。它有时在C中被用来编程“泛型”@SouravGhosh correct意味着它的行为,我们可以使用上面的语句将一个整数类型的内存分配给void吗?