linux编程
有一个整形数组如 int a;有一个函数foo(char *str),来调用这个整形数组,但是foo函数的参数是char型而数组的类型是整型,这个该怎么办啊,请他家帮我看看,谢谢了 本帖最后由 zsszss0000 于 2015-03-13 09:37 编辑#include <stdio.h>
#include <stdlib.h>
void func(char * str)
{
int *pint;
pint=(int *)str;
int i;
for(i=0;i<10;i++)
{
printf ( "a is %d\n",*pint );
pint++;
}
}
int main ( int argc, char *argv[] )
{
int a={1,2,3,4,5,6,7,8,9,10};
func((char *)a);
return EXIT_SUCCESS;
}/* end of function main*/ 回复 2# zsszss0000
谢谢!我遇到列一个面试题,当时我就是这样强制转化了一下,他直接问我这样可以吗?让我在想想,我一直没有明白,所以问问,我刚才试过你的代码了,是可以的,我想知道这个之间的强制转化是可以的吗?foo((char*)a)
会不会是大小端的问题?回复 3# mt_glass
回复 4# zsszss0000
这个我也不是很清楚,现在我都没有思路了,从哪开始着手这个问题了
要看foo的作用以及这样调用的目的是什么,然后才知道该怎么处理 那肯定是让他处理整形数之类的回复 6# 羽剑天涯
回复 6# 羽剑天涯
直接这样一问,我就说强制转化一下,结果让我在想想,我就懵了,不知道他想知道什么了?
如果foo(char*)是对char *数组进行一种操作,每个元素是char(如默认长度是10,对其排序),而另外一个整数数组a,也需要进行同类型的操作,不考虑溢出危险,可以定义一个char b,依次把a各元素赋值过去,然后,再传递b数组进去,执行完,在把b依次赋值给a。
不过如果foo不是这个作用(如计算字符串的长度),而且这样调用的目的也不是这个foo原始的功能,就要弄清楚foo的作用及这样做得目的了
回复 8# mt_glass 回复 9# 羽剑天涯
谢谢了,学习了。