Указатели на массивы литералов и ошибка run-time - C (СИ)
Формулировка задачи:
Почему ошибка run-time??
main.c
temp.c
#include <stdio.h>
#include <stdlib.h>
void foo();
const char* p[] = {"abc","def"};
void main(void){
foo();
system("pause");
}#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]);
}Решение задачи: «Указатели на массивы литералов и ошибка run-time»
textual
Листинг программы
#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]);
}
Объяснение кода листинга программы
- Программа начинается с заголовка, который включает в себя заголовочный файл stdio.h.
- В теле программы объявлен указатель на массив литералов с именем p.
- Далее определена функция foo.
- Внутри функции foo объявлена переменная типа const char* с именем str, которая содержит строку
12345. - Затем происходит вывод значения переменной str на экран с помощью функции printf.
- После этого происходит попытка доступа к первому элементу массива литералов по имени p с помощью выражения p[0].
- И затем происходит вывод значения p[0] на экран с помощью функции printf.
- Код завершается точкой с запятой.