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

Узнай цену своей работы

Формулировка задачи:

Почему ошибка run-time?? main.c
#include <stdio.h>
#include <stdlib.h>
 
void foo();
 
const char* p[] = {"abc","def"};
 
void main(void){
    foo();
    system("pause");
}
temp.c
#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]);
}

Объяснение кода листинга программы

  1. Программа начинается с заголовка, который включает в себя заголовочный файл stdio.h.
  2. В теле программы объявлен указатель на массив литералов с именем p.
  3. Далее определена функция foo.
  4. Внутри функции foo объявлена переменная типа const char* с именем str, которая содержит строку 12345.
  5. Затем происходит вывод значения переменной str на экран с помощью функции printf.
  6. После этого происходит попытка доступа к первому элементу массива литералов по имени p с помощью выражения p[0].
  7. И затем происходит вывод значения p[0] на экран с помощью функции printf.
  8. Код завершается точкой с запятой.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы