Форум 3DNews
Вернуться   Форум 3DNews > Программирование > Программирование

Ответ Создать новую тему
Опции темы Опции просмотра
Непрочитано 07.05.2012, 16:34   [включить плавающее окно]   #1
Jabberwocky
Мужской Умудрённый
Автор темы
 
Аватар для Jabberwocky
 
Регистрация: 14.12.2003
Адрес: Москва
Вопрос по C

Привет!
В моем понимании приведенный ниже код должен дважды выводить одно и то же. Объясните мне, почему это не так.

Код:
#include <stdio.h>
#include <stdlib.h>

void func(int *a, int *s);

int main(int argc, char *argv[]){

    int *array;
    int size, i;

    func(array, &size);

    for (i=0; i<size; i++)
        printf("%i\n", array[i]);

}

void func(int *a, int *s) {
    int j=0;

    *s = 5;

    a = (int *) malloc(sizeof(int) * *s);
    for(j=0; j < *s; j++)
        a[j] = j+5;

    for (j=0; j < *s; j++)
        printf("%i\n", a[j]);

}
Собственно, результат работы:
Код:
5
6
7
8
9
1412476
-1216677816
4922752
1382974
1382990
__________________
Никогда не существовало и не будет существовать никаких «прикладных наук», есть лишь приложения наук (весьма полезные!) © Л. Пастер
Jabberwocky вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 09.05.2012, 14:27   [включить плавающее окно]   #2
FeyFre
Мужской Опытный
 
Аватар для FeyFre
 
Регистрация: 05.03.2010
Адрес: Vinnitsa, UA
Не должен. Вам же компилятор сразу же выдал предупреждение об использовании неинициализированой переменной array.
func выделяет память под массив и запоминает указатель в стековую переменную a. В array оно не ложится. Потому array указывает куда-то в небо. Вам повезло что он указывает туда, откуда можно читать, иначе падало бы. Вставьте до и после вызова func printf("%p",array); и убедитесь.
FeyFre вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 10.05.2012, 00:29   [включить плавающее окно]   #3
Jabberwocky
Мужской Умудрённый
Автор темы
 
Аватар для Jabberwocky
 
Регистрация: 14.12.2003
Адрес: Москва
спасибо, ясно
__________________
Никогда не существовало и не будет существовать никаких «прикладных наук», есть лишь приложения наук (весьма полезные!) © Л. Пастер
Jabberwocky вне форума  
Конфигурация ПК
Ответить с цитированием
Ответ Создать новую тему

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 10:19. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 2000-2017 3DNews. All Rights Reserved.
Администрация 3DNews требует соблюдения на форуме правил и законов РФ
Серверы размещены в Hostkey