第6章指针与字符串 H 是允许的,尽管 n value和byCh是两种不同的数据 类型。但是 int pn value charby Ch=A' pn Value=&bcb 是不允许的,因为&byCh的类型是char*,而 pn value的类型是int*。 在C+语言中不允许将与指针型变量类型不同的 指针值赋予指针变量的原因在于,不同类型的普通变 量的存储宽度是不一样的
第6章 指针与字符串 是允许的,尽管nValue和byCh是两种不同的数据 类型。但是 int*pnValue; charbyCh='A'; pnVaIue=&byCb; 是不允许的 , 因 为&byCh的类型是 char*, 而 pnValue的类型是int*。 在C++语言中不允许将与指针型变量类型不同的 指针值赋予指针变量的原因在于,不同类型的普通变 量的存储宽度是不一样的
第6章指针与字符串 H 在某些特殊情况下,如果需要用同数据类型不兼 容的指针指向该数据类型的变量,可以使用强制类型 转换。例如: int *pn value charby Ch=A pn value=(char*)&by Ch 将指向一个char型变量的指针强制转换为指向int 型变量的指针后,就可以将值赋予int*型指针变量 pn value了
第6章 指针与字符串 在某些特殊情况下,如果需要用同数据类型不兼 容的指针指向该数据类型的变量,可以使用强制类型 转换。例如: int*pnVa1ue; charbyCh='A'; pnValue=(char*)&byCh; 将指向一个char型变量的指针强制转换为指向int 型变量的指针后,就可以将值赋予int*型指针变量 pnValue了
第6章指针与字符串 H 特殊的void*型指针由于没有任何一种数据类型同 它对应,要将其它的任何一种指针值赋予ⅴoid*型指针 变量都必须通过强制类型转换。例如 void pOinter int*pn value pOinter=(void pn value
第6章 指针与字符串 特殊的void*型指针由于没有任何一种数据类型同 它对应,要将其它的任何一种指针值赋予void*型指针 变量都必须通过强制类型转换。例如: void*nPointer; int*pnValue; nPointer=(void*)pnValue;
第6章指针与字符串 H 由于指针型变量中保存的是一个代表内存地址的 整型量,所以,通过强制类型转换,可以将指针型变 量的值赋予一个整型变量,也可以将一个整型变量的 值赋予一个指针型变量。例如: intn value void * pointer n value=(intnPointer 将void*型值强制转换成int型 Pointer=(void*)n Value 将int型值强制转换成void*型
第6章 指针与字符串 由于指针型变量中保存的是一个代表内存地址的 整型量,所以,通过强制类型转换,可以将指针型变 量的值赋予一个整型变量,也可以将一个整型变量的 值赋予一个指针型变量。例如: intnValue; void*nPointer; nValue=(int)nPointer; //将void*型值强制转换成int型 nPointer=(void*)nValue; //将int型值强制转换成void*型
第6章指针与字符串 H 同理,通过强制类型转换,也可以将一个常量赋 予一个指针型变量 int pOinter=(int*)0x98980 但是,以下两种做法是错误的: Int pOinter=&100 int pOinter=&(100*20+n value)
第6章 指针与字符串 同理,通过强制类型转换,也可以将一个常量赋 予一个指针型变量: int*pPointer=(int*)0x98980; 但是,以下两种做法是错误的: int*pPointer=&100; int*pPointer=&(100*20+nValue);