C++ void 用法

char c='V';
cout<<c<<endl;//输出V
cout<<&c<<endl;
cout<<(void *)&c<<endl;
cout<<(void *)c<<endl;

&c是c的地址么??为什么输出不出来啊??
(void *)&c是什么啊??
(void *)c又是什么啊??
cout<<&c<<endl; 明明是c的地址,只是无法这样输出,要用(void *)&c输出,对么??
cout<<(void *)&c<<endl;
cout<<(void *)c<<endl;这也是一个地址,是什么的地址啊???

1:只有char 类型的指针值不支持cout<<&c<<endl; 的输出方式,其他类型都可以,可以按照(void *)&c输出,也可以按照我下面程序中的方法。
2:cout<<(void *)c<<endl;是将c中存储的值,转化为地址值,这个地址是c中的值确定的,在你程序中为56
以下是我的详细测试程序:
#include<iostream.h>
int main(){
char c=16,*p=&c;
cout<<"c单元中存储的元素是:"<<c<<endl;//输出16
cout<<"c单元中存储的元素转化为long值为"<<(long)c<<endl;
cout<<"\n将c转化为void *输出:"<<(void *)c<<endl;
cout<<"将c转化为int *输出:"<<(int *)c<<endl;
cout<<"将c转化为long *输出:"<<(long *)c<<endl;
cout<<"将c转化为float *输出:"<<(float *)c<<endl;
cout<<"将c转化为double *输出:"<<(double *)c<<endl;
//cout<<"将c转化为char *输出:"<<(char *)c<<endl;

cout<<"\n直接输出p=&c指针:"<<p<<"\n如果出现乱码,证明该类型p指针值在cout中不支持输出"<<endl;
cout<<"\n直接利用&c,输出c的地址:"<<&c<<"\n如果出现乱码,证明c该类型&c指针值在cout中不支持输出"<<endl;
cout<<"\n将p值转化为long,再转化成16进制输出p=&c的值:"<<hex<<(long)p<<endl;
cout<<"\n将&c值转化为long,再转化成16进制输出&c的值:"<<hex<<(long)&c<<endl;
cout<<"\n将&c转化为void *输出:"<<(void *)&c<<endl;

cout<<"\n\n综合上述结果可以得出:除char*,指针类型值可以直接在cout中输出.";
return 0;}
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-01-22
1:只有char
类型的指针值不支持cout<<&c<<endl;
的输出方式,其他类型都可以,可以按照(void
*)&c输出,也可以按照我下面程序中的方法。
2:cout<<(void
*)c<<endl;是将c中存储的值,转化为地址值,这个地址是c中的值确定的,在你程序中为56
以下是我的详细测试程序:
#include
int
main(){
char
c=16,*p=&c;
cout<<"c单元中存储的元素是:"<<c<<endl;//输出16
cout<<"c单元中存储的元素转化为long值为"<<(long)c<<endl;
cout<<"\n将c转化为void
*输出:"<<(void
*)c<<endl;
cout<<"将c转化为int
*输出:"<<(int
*)c<<endl;
cout<<"将c转化为long
*输出:"<<(long
*)c<<endl;
cout<<"将c转化为float
*输出:"<<(float
*)c<<endl;
cout<<"将c转化为double
*输出:"<<(double
*)c<<endl;
//cout<<"将c转化为char
*输出:"<<(char
*)c<<endl;
cout<<"\n直接输出p=&c指针:"<<p<<"\n如果出现乱码,证明该类型p指针值在cout中不支持输出"<<endl;
cout<<"\n直接利用&c,输出c的地址:"<<&c<<"\n如果出现乱码,证明c该类型&c指针值在cout中不支持输出"<<endl;
cout<<"\n将p值转化为long,再转化成16进制输出p=&c的值:"<<hex<<(long)p<<endl;
cout<<"\n将&c值转化为long,再转化成16进制输出&c的值:"<<hex<<(long)&c<<endl;
cout<<"\n将&c转化为void
*输出:"<<(void
*)&c<<endl;
cout<<"\n\n综合上述结果可以得出:除char*,指针类型值可以直接在cout中输出.";
return
0;}
第2个回答  2007-09-15
C++的void 类型是不允许有任何操作的,因为根本就不知道它是什么类型,void通常用于非常底层的编程.所以根本就输不出来;
第3个回答  2007-09-15
(类型)是强制转换,转换成void就没有返回值了,所以输不出来。
第4个回答  2007-09-15
有意思
关注

C\/ C++中的void有什么作用?
(1)当函数不需要返回值值时,必须使用void限定,这就是我们所说的第一种情况。例如:void func(int a,char *b)。(2)0当函数不允许接受参数时,必须使用void限定,这就是我们所说的第二种情况。例如:int func(void)。

void使用
在C\/C++编程中,void关键字有其特定的使用规则。首先,如果函数不返回任何值,应声明为void类型,以避免编译器默认将其视为有返回值。例如,函数add不应有return语句,应这样定义:cvoid add(int a, int b) { \/\/ 没有返回值}尽管在某些编译器如Visual C++6.0中,不明确指定返回值类型的函数...

void是什么意思 C++中的void关键字解析?
在C++编程语言中,void是一种关键字,用于指示函数不返回任何值,或者指示指针不指向任何具体的数据类型。void可以作为函数的返回类型,也可以作为指针类型的修饰符。void* voidPtr;在C++中,函数可以有返回值,也可以没有返回值。当函数没有返回值时,可以使用void作为函数的返回类型。例如:intPtr = &a...

void的使用
在C++语言中声明一个这样的函数:int function(void){return 1;}则进行下面的调用是不合法的:

void 型指针的高阶用法,你掌握了吗?
void指针的高阶用法,掌握了吗?void指针,作为C语言中通用指针的代表,其使用方法灵活多变,是实现高级编程技巧的关键。在IAR for ARM 8.40.1的测试环境中,我们将探讨void指针的妙用。何为void指针?void指针是C\/C++中用于表示纯粹地址的约定,它不归属于任何特定类型。这意味着,void指针在使用时,...

c++中的void是什么意思?
void是空的意思,一般用来表示无参数或者无返回。比如在函数定义的时候可以 用 void func(void);前面的表示函数无返回,括号里表示函数无参数。或者void *可以表示无类型指针,允许被强制转化成任意类型指针。

c++里面void是什麼意思啊,什麼时候要用。麻烦详细解释下,谢谢了_百 ...
void是空的意思,一般用来表示无参数或者无返回。比如在函数定义的时候可以 用 void func(void);前面的表示函数无返回,括号里表示函数无参数。或者void *可以表示无类型指针,允许被强制转化成任意类型指针。

void在C++中是什么意思?
void是C语言关键字,说明函数没有返回值,oop是函数名,是用户自定义标识符。void表示空类型,它跟int,float是同地位的,一般用在没有返回值的函数中。比如:void main (),主函数完了不用写return 语句,但是如果是int main ()或者是main (),不写return 语句它就会有warning。

void是什么意思
此外,void还常用于指针类型声明中,表示一个通用指针。这种类型的指针可以指向任何数据类型,但一旦被赋值指向某个特定类型的数据后,它就只能指向该类型的数据了。这种用法在C语言中比较常见,用于创建一种更加灵活的指针类型。另外,在C++中,void关键字还可以用于模板编程中,表示一种特殊的类型占位符。

c++ 本程序里void在里面有什么用,为什么写它,别的函数前就不写?_百...
void表示Init这个函数没有返回值。其实C也要写,只是C在前面是int时可以“省略”,而C++放弃了这一功能,所以除构造函数什么都不写以外,其余函数定义时前面都必须写返回类型,没有返回值时写void。

相似回答