首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个简单的c语言强制转换有关问题

2013-01-23 
一个简单的c语言强制转换问题我是想不用#include stdio.h里面的库函数将int型变量赋值给一个char* 变量

一个简单的c语言强制转换问题
我是想不用#include <stdio.h>里面的库函数将int型变量赋值给一个char* 变量 
我的代码如下
#include <string.h>
#include <stdio.h>

int main()
{
int val = 12;
char *first;
//first = (char *)malloc(sizeof(char) * 10);
first = (char *)val;
printf("*****\n");
printf("****first = %s***\n",first);-----------段错误
//free(first);
return 0;
}

编译没问题 一旦运行就会出现段错误,并且将标记段错误的那句话注释掉就不会有什么问题,各位大神这到底为什么呢? c 类型强制转换
[解决办法]
first = (char *)val;
val是int型,是一个数。
char *是一个指针。
不能直接把一个数转换成一个地址。

输出的时候访问了非法的地址,就变段错误了
[解决办法]
int val = 12;
first = (char *)(val);是把first指向内存地址为12的内存,这段内存你是访问不了的,所以段错误。
first = (char *)(&val);是把first指向val所占的内存地址,你用%s打印,ascii中12为非打印字符。

热点排行