2014-02-03 5 views
-6
#include<stdio.h> 

float func (float t, float y){ 
    return y ; 
} 

int main(){ 
    float t0,y0,t,y; 
    printf ("the value of t: "); 
    scanf ("%f",&t0); 
    printf ("the value of y: "); 
    scanf ("%f",&y0); 
    t=t0; 
    y=y0; 
    static int n=0; 

    //  t[0]=t0; 
    //  y[0]=y0; 

    for (n=0;n<=3;n++){ 
     y[1]=y[0]; 
     printf ("value of y %f %f \n",t,y); 
    } 
    return 0; 
} 

Ошибки является:Пожалуйста, помогите мне понять эту ошибку

Building prog.obj. 
D:\master\c language\ch3\prog.c(166): warning #2117: Old-style function definition for 'main'. 
D:\master\c language\ch3\prog.c(182): error #2144: Type error: pointer expected. 
D:\master\c language\ch3\prog.c(182): error #2144: Type error: pointer expected. 
*** Error code: 1 *** 
+2

'y'' 'float'. Что вы ожидаете от 'y [1] = y [0]'? –

+0

Почему y [1] = y [0]; ???????????: Вы не определили массив. – Rahul

+0

Что вы пытаетесь сделать? –

ответ

2

Вы не может индексировать массив то, что не является массив, или указатель на массив.

Ваши y и tfloat s не указатели на массивы в вашей программе.

Вы должны сделать их float *y, *t в указатели, чтобы вы могли указать их в массив.

Изменение float t0,y0,t,y; в float t0,y0,*t,*y;

и

t=&t0; //assign address of t0 to t 
y=&y0; 

Изменение printf ("value of y %f %f \n",t,y); к

printf ("value of y %f %f \n",*t,*y); //note to dereference t and y here, to get their values 

Here's a example of your program I fixed to work

0

'Определение функции старого стиля для main()' м essage означает, что вы не дали определение прототипа. Правильные формы:

int main(void) { ... } 
int main(int argc, char **argv) { ... } 

версия int main() хорошо в C++, но не строго прототип в C, и, следовательно, получает «старый стиль» тег.

Другие сообщения являются более непостижимыми; номера строк не соответствуют отображаемому вами коду. Однако, как Tony The Lion отмечает в своей answer, линии

y[1] = y[0]; 

является ошибочным, поскольку y не является массивом. Существует возможность думать, что должно быть:

y = y0; 

и ты нужен компаньон:

t = t0; 

, чтобы иметь определенные значения, напечатанные в printf() заявлении.

Даже с этими изменениями код не имеет большого смысла. Однако, учитывая, что вы удалили 150 с лишним строк, мы можем предположить, что недостающий код будет иметь больше смысла.

Не нужно вносить n в переменную static; лучше не делать этого.


Пожалуйста, убедитесь, что в будущем, что ваши сообщения об ошибках соответствуют исходному коду вы размещаете, не в какой-то вариант версии кода вы добавите. Номера строк не должны быть размером 166 или 182; они должны быть однозначными числами или маленькими двузначными числами. Но что еще более важно, они должны соответствовать коду!

Смежные вопросы