在 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 个字符
下面的代码从字符串中删除第 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 个字符