#include <vcl.h>
#include <conio.h>
#include <stdio.h>
#pragma hdrstop
//------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int mas[4];
printf("vvedite 5 elementov massiva: \n");
for(int i=0;i<5;i++)
{
scanf("%d",&mas);
};
printf("elementi massiva s pomow'u cikla: \n");
for(int j=0;j<5;j++)
{
printf("%d\n",mas[j]);
};
printf("elementi massiva vruchnuiu: \n");
printf("%d\n",mas[0]);
printf("%d\n",mas[1]);
printf("%d\n",mas[2]);
printf("%d\n",mas[3]);
printf("%d\n",mas[4]);
getch();
return 0;
}
ошибка вывода элементов массива
Код:
Запускаю программу, ввожу элементы массива: 1,2,3,4,5
Вариант1. Этот кусок кода
Код:
printf("elementi massiva s pomow'u cikla: \n");
for(int j=0;j<5;j++)
{
printf("%d\n",mas[j]);
};
for(int j=0;j<5;j++)
{
printf("%d\n",mas[j]);
};
выводит элементы массива таике: 1,2,3,4,4
Вариант 2.Следующий кусок кода выводит элементы массива верно
Код:
printf("elementi massiva vruchnuiu: \n");
printf("%d\n",mas[0]);
printf("%d\n",mas[1]);
printf("%d\n",mas[2]);
printf("%d\n",mas[3]);
printf("%d\n",mas[4]);
printf("%d\n",mas[0]);
printf("%d\n",mas[1]);
printf("%d\n",mas[2]);
printf("%d\n",mas[3]);
printf("%d\n",mas[4]);
выводит: 1,2,3,4,5
ПОчему?
Если же в код всей программы добавить вот такой кусок,совершенно не имеющий отношение к работе с массивами
Код:
printf("eksperementi: \n");
int a=5;
int *ptr=&a;
printf("a ravno: %d\n",a);
printf("ptr ravno: %d\n",ptr);
printf("znachenie po adresu ptr: %d\n",*ptr);
int a=5;
int *ptr=&a;
printf("a ravno: %d\n",a);
printf("ptr ravno: %d\n",ptr);
printf("znachenie po adresu ptr: %d\n",*ptr);
то и вариант 1, и вариант 2 работают верно и выводят правильно элементы массива: 1,2,3,4,5
В чем дело-то?
Код:
int mas[4];
массив-то на 4 элемента объявлен! а вы пытаетесь впихнуть в него 5 элементов...
Опа!произошла путаница) Спасибо!