Я пытаюсь реализовать struct с указателем. У меня есть большая проблема, что я ввел переменную struct pointer и выделил память, используя malloc
пусть переменная указателя будет "ptr", тогда ptr будет содержать адрес. тогда почему мы используем '&' перед переменной ptr.
(scanf ("% s% d", & (ptr + i) -> тема, & (ptr + i) -> отметки);)
Давайте рассмотрим другой пример:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, i, *ptr, sum = 0;
printf("Enter number of elements: ");
scanf("%d", &n);
ptr = (int*) malloc(n * sizeof(int));
if(ptr == NULL)
{
printf("Error! memory not allocated.");
exit(0);
}
printf("Enter elements: ");
for(i = 0; i < n; ++i)
{
scanf("%d", ptr + i);
sum += *(ptr + i);
}
printf("Sum = %d", sum);
free(ptr);
return 0;
}
Вот почему мы не используем '&' перед ptr для получения ip ??
выяснить оба случая ??
Я сделал, не используя '&' в scanf при использовании структуры
struct course
{
int marks;
char subject[30];
};
int main()
{
struct course *ptr;
int i, noOfRecords;
printf("Enter number of records: ");
scanf("%d", &noOfRecords);
ptr = (struct course*) malloc (noOfRecords * sizeof(struct course));
for(i = 0; i < noOfRecords; ++i)
{
scanf("%s %d", &(ptr+i)->subject, &(ptr+i)->marks);
}
printf("Displaying Information:\n");
for(i = 0; i < noOfRecords ; ++i)
printf("%s\t%d\n", (ptr+i)->subject, (ptr+i)->marks);
return 0;
}
если "&" задано правильно
если нет, то это указывает на ошибку сегментации