gpt4 book ai didi

c - 如何在 C 中打印/检测空值

转载 作者:行者123 更新时间:2023-11-30 14:36:48 25 4
gpt4 key购买 nike

我有以下函数,我试图传递 NULL 来模拟“可选”参数:

char * slice2(const char * str, const unsigned int * start, const unsigned int * end) {

size_t string_len = strlen(str);

printf("Start: %d | End: %d\n", *start, *end);

if (*start == NULL) inferred_start = 0;
if (*end == NULL) inferred_end = string_len;

// more code and such
}

并称为:

unsigned int start = 6;
printf("'%s' ==> %s\n", "String", slice2("String", &start, NULL));

执行上述操作的正确方法是什么?

最佳答案

start 是一个指向 unsigned int 的指针,因此 *start 是一个 unsigned int,一个整数.

您的测试 if (*start == NULL) 正在尝试将整数值与空指针常量进行比较。

不幸的是,它可以编译而不会出现错误,因为 NULL 可以合法地简单地定义为 0。但要测试 start 是否为空指针,请使用

if (start == NULL) ...

同样对于end

另外,这一行:

printf("Start: %d | End: %d\n", *start, *end);

仅应在确认 startend 都不是空指针之后执行。

关于c - 如何在 C 中打印/检测空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57838786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com