nul终止一个int数组

ant*_*009 3 c

gcc 4.4.4 c89

我只是在试验一个int数组.我想到了一些东西.我可以终止它吗?例如,我使用0到nul终止.但是,0可能是此数组中的有效值.

下面的代码将在5之后终止.尽管我的意思是0是有效数字.但是,我可以指定数组的大小.但在这种情况下,我不想这样做,因为我只对这个特殊问题感兴趣.

非常感谢任何建议,

#include <stdio.h>

static void test(int *p);

int main(void)
{
    int arr[] = {30, 450, 14, 5, 0, 10, '\0'};

    test(arr);

    return 0;
}

static void test(int *p)
{
    while(*p) {
        printf("Array values [ %d ]\n", *p++);
    }
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*zek 14

简而言之,没有.技术上,nul字符在字符串中也同样有效,它只是我们使用它们来标记字符串结尾的约定,并且所有标准库函数都期望这样.\0\0对于字符串需要包含a的情况,有"双nul终止"字符串结束\0,但当然你会遇到无法存储\0\0在字符串中的问题.

如果您不想单独存储数组的大小(或使用类似技巧sizeof),您需要提供一个可以存储在该类型中的标记,但您知道它不会成为数组的一部分; 45只要您确定arr不会将其作为有效值,您就可以使用它,它只需要是唯一的