#include <stdio.h> intmain(void){ void*p; inta = 14322; charc ='A'; p = &a; //p = &c; //强制类型转换(int*)p 把变量指针p强制转换成指向int类型的指针 printf("a=%d\n",*(int*)p); p = &c; printf("c=%c\n",*(int*)p); return0; }...
在C++中,void*不能隐式转换为int*。您需要显式地转换malloc的结果:
p=(void *)a;这一句 正确的做法是 p=(void *)&a;否则 是把a值赋值给了p ,违背了指针类型值应为地址的原则。虽然编译不会有错,但到了 s=(int*)p 这一步的时候 s并不是合法地址 打印s值为500 那么*s 就是越界访问了 出现崩溃。
1、执行算术运算时,低类型(短字节)可以转换为高类型(长字节);例如: int型转换成double型,char型转换成int型等等。 就是用强制类型来实现。 3、强制类型转换语法 :当大容量的变量向小的变量的类型去转换时需要强制转换 。 (目标类型) 值; 1 package pkg1; 2 3 public class Test1{ 4 public static void ...