QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2939|回复: 25

很简单的问题,请问c语言里的任意类型的关键字是什么?

[复制链接]
发表于 2004-7-20 16:13:13 | 显示全部楼层 |阅读模式
在c语言里任意类型(就是定义一个变量但是未定他的类型,不过他可以接受任意类型的赋值)的关键字是什么啊?
发表于 2004-7-20 16:17:55 | 显示全部楼层
无类型或称未定义
void
回复

使用道具 举报

发表于 2004-7-20 17:03:57 | 显示全部楼层
那是动态语言才有的特性
C是没有的
回复

使用道具 举报

发表于 2004-7-20 18:58:31 | 显示全部楼层
[quote:27851ea190="叛逆者.c++"]那是动态语言才有的特性
C是没有的[/quote]
回复

使用道具 举报

发表于 2004-7-20 20:06:50 | 显示全部楼层
void*
回复

使用道具 举报

发表于 2004-7-20 20:47:19 | 显示全部楼层
en, void *
或者用宏
回复

使用道具 举报

发表于 2004-7-20 21:00:44 | 显示全部楼层
void *的话不就是个4字节大小的指针了嘛……
回复

使用道具 举报

发表于 2004-7-20 21:07:16 | 显示全部楼层
[quote:8c73d869bf="sjinny"]void *的话不就是个4字节大小的指针了嘛…… [/quote]

错,void*是1字节指针,你可以自己试试
回复

使用道具 举报

发表于 2004-7-20 21:19:27 | 显示全部楼层
[quote:3dc411bdb2="kakuyou"][quote:3dc411bdb2="sjinny"]void *的话不就是个4字节大小的指针了嘛…… [/quote]

错,void*是1字节指针,你可以自己试试[/quote]能否讲讲,学习   
回复

使用道具 举报

发表于 2004-7-20 22:35:31 | 显示全部楼层
汗……1字节指针啊……
回复

使用道具 举报

发表于 2004-7-21 09:14:35 | 显示全部楼层
指针的类型和系统有关
再32-bit系统上
cout << sizeof(void*) << endl;
结果是4
不可能是1

而且void*也只是无类型的指针类型
并非无类型的变量类型
回复

使用道具 举报

发表于 2004-7-21 13:40:52 | 显示全部楼层
[quote:f179881d72="叛逆者.c++"]
而且void*也只是无类型的指针类型
并非无类型的变量类型[/quote]
javascript,python,smalltalk等语言才有无类型变量这种特性。
回复

使用道具 举报

发表于 2004-7-21 21:33:31 | 显示全部楼层
[quote:f02c2102fc="叛逆者.c++"]指针的类型和系统有关
再32-bit系统上
cout << sizeof(void*) << endl;
结果是4
不可能是1

而且void*也只是无类型的指针类型
并非无类型的变量类型[/quote]

你需要饿补一下基础知识了。
c里面指针类型说的是它所指向的内存区的类型,而不是指针变量本身是什么尺寸。

例如在32位系统下,int*就是指向一个4字节的内存区,short*就是指向一个2字节的内存区,因为32位系统的内存地址是32位长(废话),所以任何指针变量都占4个字节。

为什么指针要有类型,其实完全是为了编程的方便,你对short*加1和int*加1产生的偏移是不一样的。

c语言里的任意类型就是void*,最常见的应用就是线程启动函数,在给作为被启动的对象函数传参数时用的就是void*。

其它高级语言实现时要么直接用void*要么用句柄。
回复

使用道具 举报

发表于 2004-7-21 22:34:14 | 显示全部楼层
有些人把void*称为无类型的比如http://www.king.igs.net/~billnacu/wings/csummary.html
但通常称为generic pointer如http://www.eecs.wsu.edu/~cdyreso ... tures/dataTypes.htm及《c语言参考手册》(英)p137。

它的作用似乎类似于动态语言中的无类型变量。

void*的大小《c语言参考手册》p140
:Character and void* pointers can be larger than other kinds of pointers, and they may use a representation that is different from other kinds of pointers........。似乎说明这个长度不是那么明确的是1。而且编程结果是4。
回复

使用道具 举报

发表于 2004-7-21 22:51:05 | 显示全部楼层
我只记得一个说法是:万能指针
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 18:12 , Processed in 0.045008 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表