#c
#c
Вопрос:
Я пытался вставить элемент в заданный массив, но в ,выводе последний элемент не используется кодом, приведенным ниже. Кто-нибудь, пожалуйста, может объяснить мне, почему это так?? На самом деле я не знаю, как дать ссылку, но я кое-что попробовал. Что касается ссылочной части, я дал ссылку на n, но при вызове функции она выдает ошибку времени выполнения. Кто-нибудь может мне помочь в этой части?
#include<stdio.h>
int insertAtGP(int *a, int *n, int item, int k)
{
int j;
j = *n - 1;
while(j >= k)
{
a[j 1] = a[j];
j--;
}
a[k] = item;
(*n) ;
}
int main()
{
int i;
int arr[] = {45, 50, 25, 61, 34};
insertAtGP(arr, 5, 30, 3);
for(i = 0; i <= 6; i )
{
printf(" %dn ",*(arr i));
}
}
Комментарии:
1. Ваш массив «arr» содержит только пять элементов, и вы делаете что-то с шестым. Может случиться все, что угодно, и обычно ничего хорошего.
2. Ваш
for
цикл перебирает 5 элементов, поэтому, даже если мы проигнорируем неопределенное поведение, вызванное доступом к 6-му элементу массива размером 5, вы просто не можете ожидать, что на выходе будет больше 5 элементов.
Ответ №1:
Ваш код имеет неопределенное поведение.
Вы не можете корректно индексировать дальше конца массива, и в вашем массиве есть место только для количества элементов, присутствующих в инициализаторе, то есть 5.
Ответ №2:
int arr[6] = {45, 50, 25, 61, 34};//Size after insertion is necessary. 5 < array size
int size = 5;//Actual data size of the original
insertAtGP(arr, amp;size, 30, 3);//2nd argument requires a pointer to int,
for(i = 0; i < size; i )//use the updated value. = Does not include