Немного странный вопрос, но почему-то он не дает мне покоя. Ответить на него я не могу, так как только начал изучать Си, но конкретного ответа в чем разница я найти не могу, ну кроме способов написания (это единственное в чем я пока вижу разницу :d).
Переменная в блоке "живет" только тогда, когда этот блок выполняется. А динамическая переменная - участок памяти, "метка". Вроде бы :d
Вариант первый:#include <stdio.h>
#include <malloc.h>
#include <locale.h>
int main(void)
{
setlocale(LC_ALL, "RUS");
int a, b;
printf("Введите значения для переменных \"a\" и \"b\": ");
scanf("%d%d", &a, &b);
printf("a = %d, b = %d\n", a, b);
int *c = (int*)malloc(sizeof(int));
*c = a;
a = b;
b = *c;
free(c);
printf("a = %d, b = %d", a, b);
return 0;
}
Вариант второй:#include <stdio.h>
#include <locale.h>
int main(void)
{
setlocale(LC_ALL, "RUS");
int a, b;
printf("Введите значения для переменных \"a\" и \"b\": ");
scanf("%d%d", &a, &b);
printf("a = %d, b = %d\n", a, b);
{
int c;
c = a;
a = b;
b = c;
}
printf("a = %d, b = %d", a, b);
return 0;
}
И та, и другая переменная живут не вечно. Вопрос мой такой: "чем отличается переменная "с" в двух вариантах?".