在 C 中对数组元素使用“-=”运算符

Use of the "-=" operator with array element in C

下面的代码从字符串中删除第 7 个字符及以后的字符我想通了,但是任何人都可以向我阐明数组的一般逻辑和 S1[6] -= S1[6]; 之类的操作。我搜索了数组算法,但它与地址算法和指针有关。感谢您的帮助。

#include <string.h>

int main()   
{ 
   char S1[]= "Hello World";   
   S1[6] -= S1[6];
   printf("%s",S1);
}

声明

 S1[6] -= S1[6];

可以读作

S1[6] = S1[6] - S1[6];

所以基本上,它是减去数组实例本身的值,从而得到第 7 个。元素为 0。

然而,这不会改变数组中任何其他元素的值(不像你提到的“第 7 个字符及以后......”),它只是使第 7 个元素的值成为 0,这是 字符串 的终止空字符。所以,修改后,当你将数组传递给一个需要字符串的函数时,直到空终止符只是 visible.

S1[6] -= S1[6];

等于

S1[6] = S1[6] - S1[6];

也等同于

S1[6] = 0;

或在上下文中更好

S1[6] = '[=13=]';

S1[6],数组S1的第7个元素'W'的值被自己减去,结果实际上是0, 被分配回第 7 个数组元素。

它使字符串的第 7 个元素成为空字符,终止字符串,尽管第 7 个元素之后的所有字符都不是 overwritten/erased。

这有这样的效果,即您的程序的输出将是 "Hello " 而不是 "Hello World"

如这行代码S1[6] -= S1[6];将产生零,因此当您执行代码打印 hello word string 时,它将从头打印到 null 终止符,因此它将仅打印前 5 个字符