这个朋友,你应该没有理解内存中他们是如何工作的。
首先,为了给你讲清楚。我,先讲一下,内存中他们是如何工作的。
一个int类型,例如你声明了 int a 是声明了一个变量a, 同时在内存中开辟了 int大小的内存空间你个int 是 4byte 而 char 只是1个 byte.所以,你从小到大转换,是可以的,无需cast就是强制转换,而反过来,你需要的,但是你要确定,没有超出其大小。而你的数组是hello 5个char 字符,就是5 byte.
这里讲的是2进制 存储结构
你的数组其实是 6个大小的数组 (最后多了个\0)所以
数组第一个是 h 第2个是e 以此类推。
你如果强行放200 进去的话,你说他放入那里呢?
上面朋友给你的代码,其实不是类型转换,而是使用C语言的一个方法把它转换了而已。
1.整型值赋值给整型数组:
int value=2;//定义一个变量,并赋值
int array[10];//定义一个数组
array[0]=value;//将变量值赋值给该数组。
2.整型值赋值给字符数组:
int value=3;
char str[10];
str[0]=value+'0';//赋值给单个字符
itoa(value,str,10);//数字转字符串函数itoa,10代表十进制。要包含头文件
3.字符赋值给整型数组
char ch;
int array[10];
array[0]=atoi(ch);
仅举上例。
先说明字符和自然数的关系字符一共有256个 0到9的自然数 有对应的字符所以可以强制转换为字符 但超过10就没有对应字符了 字符总共就这么几个 你现在的数组开辟了6个连续空间每个空间放了一个字符 最后一个是自动加的空字符 你现在想把一个 超过10的整数 变为字符 只能 把它拆开来 拆成字符 2 和0和 0 分别存放入这个数组的三个单元中