摘要:
4.2.4 指针和整型之前的转换你可以显式地将指针转换为整数类型,反之亦然。此种转换的结果由编译器决定,且与编译器所运行的系统的地址结构有关。指针和整数类型的转换在系统编程中很有用,当程序访问物理地址(例如:ROM、I/O寄存器等)时也会使用。当你将指针转换为一个取值范围没有指针所表示值大的整数类型时,结果是不可定义的,相反地,转换一个整数为指针类型没有必要必须产生一个有效指针,例如: float x = 1.5F, *fPtr = &x; // A float, and a pointer to it. unsigned int adr_val = (unsigned int)fPt 阅读全文
posted @ 2011-01-23 19:40
Socrates
阅读(147)
评论(0)
推荐(0)
摘要:
4.2.3.2指针转换为限定的对象类型在C中,限定类型有const, volatile和restrict,例如,编译器隐式地转换任意指针为int,需要使用const int指针,如果你要删除掉限定词,就需要使用显式类型转换,如下例所描述: int n = 77; const int *ciPtr = 0; // A pointer to const int. // The pointer itself is not constant! ciPtr = &n; // Implicitly converts the address to the type // const int *. n 阅读全文
posted @ 2011-01-23 19:39
Socrates
阅读(139)
评论(0)
推荐(0)
摘要:
4.2.3 隐式指针转换编译器隐式地转换确定的指针类型,分配、条件表达式使用操作符==和!=,函数调用使用三种隐式的指针转换,如下节所描述,三种隐式指针转换:l 一个指针对象类型可以隐式地转换为void指针,反之亦然;l 一个给定类型的指针可以隐式地转换为一个该类型更合格的版本;l 一个null指针常可以隐式地转换为任意指针类型。4.2.3.1 指针转换为voidVoid指针为具有void *类型的指针,通常称为多用途指针,可以表示任意对象的地址,而不关心它的类型,例如,malloc()函数返回一个void指针,在你使用内存块前,void指针必须转换为指向一个对象的指针。Example 4-1 阅读全文
posted @ 2011-01-23 18:41
Socrates
阅读(137)
评论(0)
推荐(0)
摘要:
4.2.2 显式指针转换将一个指针转换为另一个指针类型,必须使用一个显示转换,一些情景下,编译器会提供隐式的转换,这些描述在本章后面的部分,指针也可以显式地转换为整型,反之亦然。4.2.2.1 对象指针你可以显示地转换一个对象指针为另一个对象指针类型。在程序中,你必须确保这种转换有意义。例如: float f_var = 1.5F; long *l_ptr = (long *)&f_var; // Initialize a pointer to long with // the address of f_var. double *d_ptr = (double *)l_ptr; // 阅读全文
posted @ 2011-01-23 18:39
Socrates
阅读(111)
评论(0)
推荐(0)

浙公网安备 33010602011771号