#include <stdio.h>
#include <stdlib.h>
main()
{
typedef struct
{
int info;
struct strc* next_ptr;
}strc;
strc* strcVar[5];
strcVar = malloc(sizeof(strc) * 5);
strcVar[0]->info = 1;
printf(" All is well ");
}
ответ
strcVar
является (локальным) именем массива, вы не можете назначить ему указатель. Вы, наверное, хотели:
strc* strcVar;
... /* and later */
strcVar[0].info = 1;
Может быть, вы хотели массив указателей на struct strc
, то ответ на Vaughn Катон поможет.
Эта линия является неправильным и ненужным:
strcVar = malloc(sizeof(strc) * 5);
вместо этого вы могли бы использовать:
{
int i=0;
for (;i!=5; ++i) {
strcVar[i] = malloc(sizeof(strc));
}
}
Вы не можете присвоить массив из malloc
- это один или другой. Если вы объявили массив из пяти указателей, память для них уже выделена. Если вы должны использовать malloc
, используйте указатель на указатель вместо массива. В противном случае, выделить отдельные элементы с malloc
, а не массив:
strc* strcVar[5];
strcVar[0] = malloc(sizeof(strc));
Извините, опечатка '# include' была моей ошибкой при редактировании его кода. – koopajah
исправить код:
#include<stdio.h>
#include<stdlib.h>
void main()
{
typedef struct
{
int info;
struct strc* next_ptr;
}strc;
strc* strcVar;
strcVar = malloc(sizeof(strc) * 5);
strcVar[0].info = 1;
printf(" All is well ");
}
Изменить
strc* strcVar[5];
в
strc* strcVar;
strcVar = malloc(sizeof(strc) * 5);
strcVar[0].info = 1;
ИЛИ
Изменить
strc* strcVar[5];
strcVar = malloc(sizeof(strc) * 5);
strcVar[0]->info = 1;
к
strc strcVar[5];
strcVar[0].info = 1;
Вызов неинициализированного указателя приводит к UB и, скорее всего, сбой, вы не хотите давать первый совет для OP. – 2013-02-12 13:52:21
@ H2CO3 - К сожалению, это слишком удобно с помощью клавиши удаления! –
В любом массиве базовый адрес является константным указателем. Вы не можете его изменить.
Предположим, если у вас есть int [5];
Здесь a является базовым указателем на весь массив, и вы не можете его изменить.
Это относится ко всем массивам.
- 1. Какая ошибка в следующем коде?
- 2. Какая ошибка в следующем коде?
- 3. Какая ошибка в следующем коде?
- 4. Какая ошибка в следующем коде angularjs?
- 5. Какая ошибка в следующем PHP-коде?
- 6. Какая ошибка в этом следующем коде?
- 7. Какая ошибка в следующем Java-коде?
- 8. ошибка в следующем коде?
- 9. Какая разница в следующем коде?
- 10. Ошибка в следующем коде
- 11. Какая ошибка в следующем коде? (Python 2.7, матрицы)
- 12. Какая ошибка в коде кода оболочки?
- 13. Какая библиотека «WL» в следующем коде
- 14. Ошибка в следующем коде django?
- 15. Ошибка выполнения в следующем коде
- 16. Какая ошибка в коде?
- 17. Какая ошибка в коде?
- 18. Какая ошибка в коде?
- 19. Какая ошибка в коде.
- 20. Какая ошибка в коде?
- 21. Какая ошибка в следующем фрагменте кода на python?
- 22. Какая ошибка в моем коде?
- 23. Ошибка в следующем фрагменте кода
- 24. Какая ошибка в следующем фрагменте OCaml?
- 25. Какая ошибка в следующем операторе mysql?
- 26. Какая ошибка в этом коде?
- 27. Какая ошибка в этом коде?
- 28. Какая ошибка в этом коде?
- 29. Какая ошибка в этом коде
- 30. Какая ошибка в моем коде?
А компилятор говорит? Или как вы знаете, что есть ошибка? –
Вы должны узнать о различии между структурами и указателями на структуры. –