C语言中关于地址的问题 求高手解

2024-11-02 23:33:41
推荐回答(3个)
回答(1):

调用函数时当然可以将参数首地址传给被调用的函数,不过写法上要用用指针的方式,改成如下形式:
func (unsigned long *pulArgu)
{
*pulArgu = 0x100; //实际就是改变了下面函数中变量a的值。
}
main()
{
unsigned int a;
func((unsigned long *)&a);
}
不过要注意的是,在PC上一般编译器都将unsigned int和 unsigned long都是32为的,所以结果应该没有问题,但如果是单片机的话,unsigned int和 unsigned long的长度可能不一样,这样操作是有风险的,如果unsigned int是 16位,unsigned long是32位的话,那么在func给*pulArgu赋值就会出现访问越界,如果不注意出了问题还不容易查到。

回答(2):

如果你UL 是一个无符号长整型指针的话,是没错的
如果,只是一个长整形,编译都不会通过的
#typedef unsigned int * UL;
如果这样的话是对的

回答(3):

可以这么说吧。
将数组首地址传给函数,这样调用了数组。