表的定义中包含了字段的数据类型,可以查到。
例如:在SQL Server 2005中检查 USERS表中的UID列的数据类型
select c.[name] as column_name, t.name as [type] from sys.columns as c, sys.types as t where c.system_type_id = t.system_type_id and c.object_id = object_id(N'USERS') and c.[name] = 'UID'
输出结果:
column_nametype
----------------- -----
UID varchar
通过约定参数类型或者约定参数格式,确定传入数据的类型。
1、 大多数情况下,参数类型都是确定的,在函数定义时就可以确定类型。此种情况下,不需要函数本身判断,编译器会做判断或转换。
如
void func(int n)声明这样的函数,参数为int型,当调用时如果实参不是int型,C编译器会尝试转换为int型,如果转换失败,则编译报错。
2、 对于参数个数和类型不确定的情况,也就是不定参数形式,一般增加一个格式字符串,通过格式字符串解析后续有几个参数,每个类型是什么。
典型例子为printf:
int printf(const char * fmt, ...)在printf中,后续参数类型及个数都是不确定的,printf会根据参数fmt中包含的格式字符串,来确定后续的参数类型。 比如传入fmt为"%s%d%lu",那么printf就会尝试在后续参数中读取三个值,类型分别为char *, int,和unsigned long。
除此外,也可以采用其他方式进行约定。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)