элементы указателя на структуру, просто возвращающие 0

#c #pointers #struct

#c #указатели #структура

Вопрос:

Поэтому я хочу иметь структуру под названием poly_el, которая хранит значение коэффициента и мощности полиномиального элемента (например, 3x^4 будет храниться как 3 и 4 в структуре). Я, конечно, хочу, чтобы они были двойного типа. В конце концов, я хочу составить связанный список таких элементов, чтобы представить целый многочлен. Поэтому я использую указатель на структуру, и по какой-то причине указатель просто возвращает 0 вместо значений, которые я ему присваиваю.

Вот суть кода:

 #include lt;stdio.hgt; #include lt;stdlib.hgt; #include lt;string.hgt; #include lt;math.hgt; #include lt;ctype.hgt;   struct poly_el {  double coeff;  double power;  struct poly_el *next; };  int main() {  double a=10.0;  double b=20.0;  struct poly_el *spe;  spe=(struct poly_el *)malloc(sizeof(struct poly_el));  spe-gt;coeff=a;  spe-gt;power=b;  printf("%f coeff, %f power", amp;spe-gt;coeff, amp;spe-gt;power); }  

Я ожидаю, что он будет выдавать 10 коэффициентов, 20 мощности, но он выдает всего 0,000 для обоих. Кроме того, я попробовал %lf,%ld вместо %f, а также попытался выполнить тот же код, но с плавающими символами. Ни одно из них, похоже, не сработало. Я чувствую, что в моем назначении a и b есть какая-то ошибка — gt;коэффициент и мощность.

Комментарии:

1. Отправьте значения непосредственно в printf.

2. Почему у вас есть amp; вызов printf ()? это должно быть справедливо spe-gt;coeff .

3. Избавьтесь от своего текущего компилятора (настроек) и начните использовать gcc -Wall

Ответ №1:

Проблема в том, что вы передаете по ссылке переменные spe-gt;coeff и spe-gt;gt;power, в то время как вы хотите напечатать значения, поэтому просто избавьтесь от символа amp; в вашем printf, например :

 printf("%f coeff, %f power", spe-gt;coeff, spe-gt;power);  

помните, что указание переменной по ссылке дает вам адрес этой переменной в памяти.

Комментарии:

1. вау, это была действительно глупая ошибка. спасибо, что нашли время помочь