C语言笔记

文章介绍了三种将浮点数按照IEEE754标准转换为16进制的C语言方法,包括使用指针和数组。同时,讨论了main函数中局部变量和全局变量的区别,如作用域、可见性和生命周期,并解释了如何在不同函数间传递和访问变量。
摘要由CSDN通过智能技术生成

1.浮点数根据IEEE754转换为16进制char 数组或者int

指针的使用和数组的使用相同,注释的代码和没注释的代码意义相同,数组名相当于数组首元素地址,相当于一个指向数组的指针

指针++,相当于其指向的那种数据类型长度为几就加几

char * = str1;int * = str2;

str1++  相当于地址加1;str2++ 相当于地址加4;

//浮点数转化成十六进制char数组,或者直接转为int

//方法一
void FloatToByte(float floatNum, u8* byteoutputy)
{
    char* pchar = (char*)&floatNum;
    for (int i = 0; i < sizeof(float); i++)
    {
  //      *byteoutputy = *pchar;
  //      pchar++;
  //      byteoutputy++;
        byteoutputy[i] = *pchar;
        pchar++;
    }
}

//方法二
void FloatToByte(float floatNum, uint8_t* byteOutput)
{
    uint32_t* pInt = (uint32_t*)&floatNum; //将浮点数数据地址强制转换为u32
    uint32_t floatInt = *pInt;             //取出浮点数数据给到floatInt

    for (int i = sizeof(float) - 1; i >= 0; i--)
    {
        byteOutput[i] = floatInt & 0xFF;  //每次取出低八位
        floatInt >>= 8;                   //右移八位
    }
}

//方法3
/**
 * @brief 将浮点数按照IEEE754转换为16进制,小端存储
 *
 * @param floatNum 需要转换的浮点数
 * @return u32 转换为16进制的浮点数
 */
u32 FloatToByte(float floatNum)
{
    u32 byteoutputy = *((u32 *)&floatNum);
    return byteoutputy;
}

2.c语言main函数中定义的局部变量和main函数外定义的全局变量有什么区别

在C语言中,`main`函数中的局部变量的生命周期确实与程序的运行时间一致,因为`main`函数是程序的入口函数,只有在整个程序执行完毕后才会结束。这种特性使得`main`函数中的局部变量在程序的执行期间一直存在,与全局变量类似。

然而,`main`函数中的局部变量和全局变量之间仍然存在一些重要区别:

1. 作用域:`main`函数中的局部变量的作用域仅限于`main`函数内部,而全局变量的作用域跨越整个程序。

2. 可见性:局部变量只能在`main`函数内部访问,其他函数无法直接访问`main`函数中的局部变量。全局变量则可以在整个程序的任何地方被访问。

3. 冲突和隐藏:如果在`main`函数内部定义了与全局变量同名的局部变量,该局部变量将隐藏全局变量,`main`函数内部使用该变量时将访问局部变量而非全局变量。这与全局变量的命名冲突和隐藏规则相同。

总的来说,`main`函数中的局部变量与全局变量相比,虽然在生命周期上类似于全局变量,但其作用域仅限于`main`函数内部。这些差异仍然是需要考虑的关键因素,以便在程序设计中正确使用和管理变量。

3.其他文件或者其他函数如何调用main函数内定义的局部变量

在C语言中,其他文件或其他函数无法直接访问`main`函数内定义的局部变量。这是因为局部变量的作用域仅限于定义它们的函数内部,在函数外部是不可见的。

如果您希望其他文件或其他函数能够使用`main`函数内的局部变量,可以考虑以下方法:

1. 将局部变量转换为全局变量:将`main`函数内的局部变量移到函数外部,变成一个全局变量。这样其他文件或其他函数就可以直接访问该全局变量了。但是需要注意,将局部变量改为全局变量可能会引发命名冲突和作用域扩散等问题,需要谨慎使用全局变量。

2. 将局部变量的值传递给其他函数:在`main`函数中调用其他函数时,将局部变量的值作为参数传递给目标函数。通过函数参数的方式,将局部变量的值传递给其他函数进行处理。

3. 使用返回值:如果需要获取`main`函数内的局部变量的值,可以将该局部变量的值作为`main`函数的返回值,然后在其他函数中调用`main`函数并接收返回值。这样可以间接获取`main`函数内的局部变量的值。

4.将main函数中的局部变量的地址传递给其他文件中的函数。这可以通过函数参数来完成。在其他文件的函数声明中,将局部变量的地址作为参数声明,并在函数调用时将main函数内的局部变量的地址传递给该函数。

需要注意的是,这些方法都需要在程序中进行适当的函数调用和参数传递,以确保正确地访问和使用`main`函数内的局部变量。此外,建议根据实际需求仔细考虑变量的作用域和生命周期,选择合适的方法来传递和共享变量的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值