c - 如何检查我的变量是否等于 NULL ?C
问题描述
我必须编写代码来检查我的代码中的输入是否正确。我必须防止输入字母、NULL 等。
我尝试了简单的 if(*tab == NULL).. 但我无法比较 float 和 void 值。
int avg(const float* tab, unsigned int size, float *result)
{
if( size <= 0)
{
return 1;
}
float suma = 0;
for(unsigned int i=0;i<size;i++)
{
suma=suma + *(tab+i);
}
*result = suma / size;
return 0;
}
解决方案
C 存储值的方式与 Javascript 或 Python 不同。在 C 中,没有没有值的变量。您永远无法仅通过查看变量本身来确定变量是否已初始化。变量可以未初始化,但是使用该变量会导致未定义的行为,在这种情况下,ub 最可能的结果是您得到一个概率为零的随机值。
如果你做声明float f
,那么你会保留一定数量的内存(通常是 4 个字节的浮点数)。每次f
在表达式中使用时,在地址处找到的任何位模式都&f
将被解释为浮点数。一些位模式对于浮点数可能是特殊的,但 NULL 不是其中之一,但是当涉及整数时,每个位模式都是有效的常规整数。
您只需确保在将其传递给您的函数之前tab
已正确初始化。函数本身无法确定是否是这种情况。
在 C 中,NULL 是一个常量,通常是 type void*
,但也可能是 type int
。预期目的是用于指针,不应用于其他任何用途。
此外,C 是一种静态类型语言,这意味着变量永远不能改变类型。浮点数永远不能包含字母。您可以通过cast使浮点数包含与整数、四个字符串、指针或其他内容相同的位模式,但很可能结果没有意义。
推荐阅读
- vue.js - 在子路径级别的 Traefik 中设置 2 个 Vue.js 应用程序时出错
- r - R中的数据框拆分或重构
- github - Github 按更改的最大文件数对 PR 排序
- .net-core - 无法让应用程序在电视上运行
- python - 使用 ubuntu-latest 在 github 运行器中基于 Python 的彩色日志记录
- typescript - Slack Web API - 拉取特定消息
- python - OpenCV warpAffine 总是返回 0 矩阵
- kubernetes - Cert-Manager dns01 质询订单待处理
- reactjs - 在 React 中为 useContext 使用条件的最佳方法?
- php - 我在树莓派上遇到 apache 用户 www-data 的权限问题