空字符串输入为位表示

时间:2011-05-24 12:08:33

标签: c

这一定是有史以来最愚蠢的问题之一,但我的大脑目前似乎根本没有工作。出于测试目的,我需要空字符串的位表示 做一些硬件调试。

换句话说,C函数的输入将是空字符串,即“”,现在我想知道如何将空字符串表示为64位值。这只是一个64个零的序列还是我想念这里的东西?

谢谢!

4 个答案:

答案 0 :(得分:2)

“C-string”是一个带有零元素的字符数组;在大多数情况下,它会衰减指向其第一个元素的指针。另外,通常接受converse:指向char的指针(通常)被假定为指向具有(后续)零元素的字符数组(的一部分)的指针。

如果将“空字符串”解释为0个元素的数组,那么在C语言中确实没有这个概念 如果将“空字符串”解释为第一个元素为0的N个元素的数组,则该第一个元素的位表示为CHAR_BIT二进制0(通常为8)。
如果将“空字符串”解释为指向NULL的指针,则该指针的位表示是实现定义的,但将其与0进行比较必须产生“真”。

/* ERRATA: where it says "is a string" please read "can be interpreted as a string" */
char arr_string[10]; /* if any element is 0, this is a string */
char *ptr_string; /* if it points to a valid object accessible as `char`
                  ** and a subsequent valid char is 0, this is a string */

strcpy(arr_string, "foobar"); /* arr_string[6] == 0 */
ptr_string = arr_string;

test_string_empty(arr_string);      /* not empty */
test_string_empty(ptr_string + 6);  /* empty */
test_string_empty(NULL);            /* unknown */

答案 1 :(得分:0)

是的,字符串终止符的值为0. 64位表示确实是64个零。

答案 2 :(得分:0)

C字符串终止字符为\0(所有位都设置为零)。其余位不必总是零:如果通过将其第一个char设置为\0来清空该字符串,则其他字符将不会更改。设置为零的64位序列是空C字符串的一个表示。

答案 3 :(得分:0)

第一个char将是'\ 0',它将是一个空终止符。在内存中,之前的char设置为NULL之前的字符仍然存在。所以让string = Hello World,然后string = \ 0。记忆看起来像'\ 0','e','l','l','o','','W','o','r','l','d',' !”。 所以如果你将string初始化为null。它首先是\ 0的字符,其余的将位设置为零。