Массивы и указатели в C — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
 
Строка 2: Строка 2:
 
<source lang="c">/* Печать массива */
 
<source lang="c">/* Печать массива */
 
void print_array(int * a, int sz) { /* вспомните, что "int a[]" ~ "int * a" в параметрах функции */
 
void print_array(int * a, int sz) { /* вспомните, что "int a[]" ~ "int * a" в параметрах функции */
     int *p;
+
     int * p;
 
     for(p = a; p != a + sz; ++p) {
 
     for(p = a; p != a + sz; ++p) {
 
         printf("%d ", *p);  /* p последовательно указывает на все элементы массива */
 
         printf("%d ", *p);  /* p последовательно указывает на все элементы массива */

Текущая версия на 19:50, 25 сентября 2013

Работа с массивами через указатели

/* Печать массива */
void print_array(int * a, int sz) { /* вспомните, что "int a[]" ~ "int * a" в параметрах функции */
    int * p;
    for(p = a; p != a + sz; ++p) {
        printf("%d ", *p);  /* p последовательно указывает на все элементы массива */
    }
    printf("\n");
}

/* Ввод массива с клавиатуры */
void read_array(int *a, int sz) {
    int * p;
    for(p = a; p != a + sz; ++p) {
        scanf("%d", p); /* здесь не нужно использовать операцию взятия адреса &, так как
                           значение указателя это и есть нужный адрес                     */
    }
}