#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. вау, это была действительно глупая ошибка. спасибо, что нашли время помочь