Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 1
Регистрация: 28.08.2013
Сообщений: 414
1

Указатели на массивы литералов и ошибка run-time

22.08.2014, 02:24. Показов 722. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Почему ошибка run-time??
main.c
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdlib.h>
 
void foo();
 
const char* p[] = {"abc","def"};
 
void main(void){
    foo();
    system("pause");
}
temp.c
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
void foo(){
    extern const char* p;
    const char* str = "12345";
    printf("str = %s    \n",str);
 
 
    printf("p[0] = %s   \n",p[0]);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.08.2014, 02:24
Ответы с готовыми решениями:

Ошибка run time error
Здравствуйте. Помогите пожалуйста, при запуске макроса выдает ошибку &quot;Run-time error '-2147467259...

Ошибка run time error 9
Помогите начинающему ,делаю курсовую,при выполнении выходит ошибка run time error 9 vba вот код...

Ошибка Run-time error ''76''
доброе время суток :) Я скачал TopServer 3.0.3_32 ... и ни толька... в эту программу входят : ...

Ошибка Run-time error '91'
Доброго дня, форумчане! Просьба помочь разобраться с проблемой, которая возникла после...

8
0 / 0 / 0
Регистрация: 21.08.2014
Сообщений: 6
22.08.2014, 09:28 2
Объявление
C
1
extern const char* p;
внутри функции означает, что ты желаешь в функции использовать *p глобальную для модуля temp.c.

Если вынести объявление за пределы функции, то получишь глобальную переменную для всех модулей и ошибка пропадет.
0
2 / 2 / 1
Регистрация: 28.08.2013
Сообщений: 414
22.08.2014, 12:19  [ТС] 3
Если вынести объявление за пределы функции, то получишь глобальную переменную для всех модулей и ошибка пропадет.
напиши код полностью
main.c
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdlib.h>
 
void foo();
 
const char* p[] = {"abc","def"};
 
void main(void){
    foo();
    system("pause");
}
temp.c
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
extern const char* p;
 
 
void foo(){
 
    const char* str = "12345";
    printf("str = %s    \n",str);
    printf("p[0] = %s   \n",p[0]);
 
}
так?
У меня все равно ошибка
0
0 / 0 / 0
Регистрация: 21.08.2014
Сообщений: 6
22.08.2014, 12:40 4
код полностью:

main.c
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <stdlib.h>
#include "temp.h"
 
void foo();
 
const char* p[] = { "abc", "def" };
 
void main(void){
    foo();
    system("pause");
}
temp.h
C
1
extern const char* p[];
temp.c
C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include "temp.h"
 
void foo(){
 
    const char* str = "12345";
    printf("str = %s    \n", str);
    printf("p[0] = %s   \n", p[0]);
}
0
2 / 2 / 1
Регистрация: 28.08.2013
Сообщений: 414
22.08.2014, 14:19  [ТС] 5
В main.c строку #include "temp.h" можно было это не писать
А зачем подключать temp.h??
Почему, например, в примере выше надо подключать temp.h, а тут
main.c
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdlib.h>
 
void foo();
 
const char* str = "12345";
 
void main(void){
    foo();
    system("pause");
}
temp.c
C
1
2
3
4
5
6
7
#include <stdio.h>
 
void foo(){
 
    extern const char* str;
    printf("str = %s    \n", str);
}
не обязательно??
0
0 / 0 / 0
Регистрация: 21.08.2014
Сообщений: 6
22.08.2014, 14:31 6
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
почему, например, в примере выше надо подключать temp.h, а тут
Можно обойтись и без temp.h, но по традиции объявления делают в заголовочных файлах.
0
2 / 2 / 1
Регистрация: 28.08.2013
Сообщений: 414
22.08.2014, 14:33  [ТС] 7
Можно обойтись и без temp.h
так без temp.h не работает, вернее работает, только run-time ошибка
0
0 / 0 / 0
Регистрация: 21.08.2014
Сообщений: 6
22.08.2014, 14:37 8
main.c
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdlib.h>
 
void foo();
 
const char* p[] = { "abc", "def" };
 
void main(void){
    foo();
    system("pause");
}
temp.c
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
extern const char* p[];
 
void foo(){
 
    const char* str = "12345";
    printf("str = %s    \n", str);
    printf("p[0] = %s   \n", p[0]);
}
0
2 / 2 / 1
Регистрация: 28.08.2013
Сообщений: 414
22.08.2014, 14:45  [ТС] 9
extern const char* p;
так я просто неправильно написал, опечатался,
надо было extern const char* p[], а не extern const char* p
0
22.08.2014, 14:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2014, 14:45
Помогаю со студенческими работами здесь

Ошибка: Run-time error '5'
Доброго времени суток! Совсем недавно занялась изучением VBA и столкнулась с проблемой. Имеется...

Ошибка 'Run-time error 91'.
Тут такой касяк... Значит написал я прогу, откампилировал и запустил. Все работало, но только ну...

Ошибка Run-time error
Здравствуйте! Задача такая: есть клеточное поле, по нему ездит робот. Пользователь задает размеры...

Ошибка Run-time error '13'
При заполнении таблицы на 3-4 строке выскакивает вот это; 'общая стоимость Dim a As Currency a...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru