任何人都可以解释为什么数组c与结构 - 不能改变的变量
all_leds[0].pattern = 3;
和
all_leds[1].pattern = 4;
奈何?
#include <stdio.h>
int main(void)
{
struct Led
{
int pin;
int pattern;
};
struct Led led_1 = {1, 1};
struct Led led_2 = {2, 2};
printf("%d\n", led_1.pattern); // prints 1
printf("%d\n", led_2.pattern); // prints 2
struct Led all_leds[2];
all_leds[0] = led_1;
all_leds[1] = led_2;
printf("%d\n", led_1.pattern); // prints 1
printf("%d\n", led_2.pattern); // prints 2
all_leds[0].pattern = 3;
all_leds[1].pattern = 4;
printf("%d\n", led_1.pattern); // prints 1 ????
printf("%d\n", led_2.pattern); // prints 2 ????
return 0;
}
您正在分配'all_leds [0] .pattern'并打印'led_1.pattern'那些是两个不同的内存空间... –
这是对某些事情的陈述。这不符合你的期望。 C具有价值语义。说'a = b;'意味着'a'具有与'b'相同的值,并不意味着它们都指向同一个对象。 – juanchopanza
如果只在数组中存储指向这些结构体的指针,那么它会很有帮助吗? –