int *t="4568";是可以的,编译器会把字符串常量"4568"的首地址赋值给t,但首地址是char *类型的,所以进行了一次强制类型转换,编译器会给出一个警告
puts(t);的时候t代表的是转换后的int *类型的地址,所以puts()函数把int*类型地址强制转换为char *类型,然后输出以此地址为起始的字符串。编译器也会给出一个警告:
test1.c:4: warning: initialization from incompatible pointer type
test1.c:5: warning: passing argument 1 of ‘puts’ from incompatible pointer type
但程序是可以运行的