请教一个指针创建数组的问题.
main(){
int **b,i;
b=(int)malloc(sizeof(8));
for(i=1;i<4;i++)b[i]=(int)malloc(sizeof(8));
}
main()
{
int **b,i;
b=(int **)malloc(sizeof(8));
for(i=1;i<4;i++)b[i]=(int *)malloc(sizeof(8));
}
这两个代码都能顺利创建数组. 但请问它们有malloc前面的强制转换数据类型有没有意义??
[此贴子已经被作者于2005-12-26 22:31:55编辑过]
搜索更多相关的解决方案:
指针
----------------解决方案--------------------------------------------------------
第一:地址值本身就是一个整数值。所以在int的整数范围内的地址值可以用int的一个整数表示。你甚至可以用一个char变量表示一个在0-255之间的地址。
第二:虽然上面例子中的两个表达式:b=(int)malloc(sizeof(8))和b[i]=(int)malloc(sizeof(8))可以这么写,但是编译器还是把它们分别变成b=(int **)(int)malloc(sizeof(8))和*(b+i)=(int *)(int)malloc(sizeof(8))。也就是在你的强制转换后再进行强制转换。
----------------解决方案--------------------------------------------------------
是这样啊.
----------------解决方案--------------------------------------------------------