2014-10-06 2 views
0

Извинения за этот повторный пост, поскольку я не знаю, как рассказать о моем вопросе, поскольку это мой первый раз, используя переполнение стека. Надеюсь, кто-то может помочь мне в этой викторине для учебы.Передача массивов в функции

У меня были исследования по этой программе, но я не знаю, связано ли это с вопросом викторины на arraySize.

Вопрос находится ниже: мы передаем массив ai для функции fillArray. Что именно передается функции? Ответ - это один адрес памяти, а не 10 целых чисел! Вот почему мы можем использовать функцию для заполнения массива ai с 10 номерами. Завершите описанную выше функцию fillArray так, чтобы она считывала из массива число целых чисел arraySize и заполняло массив этими числами. Напишите программу драйвера для проверки функции с целыми массивами разных размеров. Обратите внимание, что формальный параметр int array [] в функции fillArray можно изменить на int * array. Проверьте это, изменив и проверив свой код.

Мой код ниже:

#include <stdio.h> 
#define MAX 10 

int fillArray(int array[], int arraySize); 
void print_intaray(int array[], int arraySize); 
main() 
{ 
    int ai, exam_scores[MAX]; 

    printf("***List of Array***\n\n"); 
    ai = fillArray(exam_scores, MAX); 
    print_intaray(exam_scores, ai); 
} 

int fillArray(int array[], int arraySize) 
{ 
    int ai, count = 0; 

    printf("Type array, EOF to quit\n"); 

    while ((count < arraySize) && (scanf("%d", &ai) !=EOF)) 
    { 
     array[count] = ai; 
     count++; 
    } 
    return count; 
} 

void print_intaray(int array [], int arraySize) 
{ 
    int i; 
    printf("\n***Your Arrary***\n\n"); 
    for (i = 0; i<arraySize; i++) 
     printf("%d\n", array[i]); 
} 

Я новичок в программировании, и я надеюсь, что мой вопрос может быть как-то решительность.

Спасибо за просмотр :)

+1

Итак, что конкретно возникает в вашем вопросе? – OldProgrammer

+0

что? в чем смысл? – HuStmpHrrr

+0

Я понимаю, что вы хотите сделать, но в чем ваш вопрос? – user1336087

ответ

0

Предполагая, что вопрос является «Почему int array[] и int *array эквивалент в качестве аргумента функции»:

Я не очень эксперта C, но AFAIK массивы (в C) в основном являются указателями, к которым вы добавляете определенное смещение. Говоря C, вы ожидаете, что int myarray[] означает почти то же самое, что и ожидающий указатель на целое число (int *array). Если вы увеличиваете указатель, вы можете получить доступ к следующему элементу массива. Это также известно как арифметика указателя.

Компилятор C преобразует синтаксис массива как foo[3] в фоновом режиме примерно в *(*foo+3), но вы также можете сделать это самостоятельно, просто имея дело с указателями.

+0

Спасибо за ваш ответ. Том, я понял ваш смысл, но я больше беспокоился о вопросе, который просит заполнить arraySize входами пользователя, означает ли это, что вывод основан на том, что пользователь вводил? Потому что, основываясь на приведенном выше коде, мой вывод - это именно то, что у меня было. Кроме того, если вопрос требует написать программу драйвера для проверки функции, могу ли я правильно написать код на основе вышеизложенного? Как-то запутался в самом вопросе. Извините за мой плохой английский. –

+0

Я не уверен, что подразумевается под драйверами, но, похоже, вам нужно взять входные данные массива от пользователя и сохранить их в массиве. –

+0

Downvoter: пожалуйста, оставьте комментарий, чтобы я мог улучшить свой вопрос! –

Смежные вопросы