任何人都可以解釋爲什麼數組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
如果只在數組中存儲指向這些結構體的指針,那麼它會很有幫助嗎? –