mt_glass 发表于 2015-03-13 09:18

linux编程

有一个整形数组如 int a;有一个函数foo(char *str),来调用这个整形数组,但是foo函数的参数是char型而数组的类型是整型,这个该怎么办啊,请他家帮我看看,谢谢了

zsszss0000 发表于 2015-03-13 09:37

本帖最后由 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*/

mt_glass 发表于 2015-03-13 10:10

回复 2# zsszss0000
谢谢!我遇到列一个面试题,当时我就是这样强制转化了一下,他直接问我这样可以吗?让我在想想,我一直没有明白,所以问问,我刚才试过你的代码了,是可以的,我想知道这个之间的强制转化是可以的吗?foo((char*)a)


   

zsszss0000 发表于 2015-03-13 11:07

会不会是大小端的问题?回复 3# mt_glass


   

mt_glass 发表于 2015-03-13 11:32

回复 4# zsszss0000
这个我也不是很清楚,现在我都没有思路了,从哪开始着手这个问题了


   

羽剑天涯 发表于 2015-03-13 15:43

要看foo的作用以及这样调用的目的是什么,然后才知道该怎么处理

zsszss0000 发表于 2015-03-13 16:19

那肯定是让他处理整形数之类的回复 6# 羽剑天涯


   

mt_glass 发表于 2015-03-13 19:30

回复 6# 羽剑天涯
直接这样一问,我就说强制转化一下,结果让我在想想,我就懵了,不知道他想知道什么了?

   

羽剑天涯 发表于 2015-03-14 22:42

如果foo(char*)是对char *数组进行一种操作,每个元素是char(如默认长度是10,对其排序),而另外一个整数数组a,也需要进行同类型的操作,不考虑溢出危险,可以定义一个char b,依次把a各元素赋值过去,然后,再传递b数组进去,执行完,在把b依次赋值给a。
不过如果foo不是这个作用(如计算字符串的长度),而且这样调用的目的也不是这个foo原始的功能,就要弄清楚foo的作用及这样做得目的了
回复 8# mt_glass

mt_glass 发表于 2015-03-28 09:26

回复 9# 羽剑天涯
谢谢了,学习了。


   
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: linux编程