2013-07-02 2 views
1

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

#include <stdio.h> 

int main(int argc, char *argv[]){ 
    int x = 98; 
    int *g = x; 
    printf("This is x: %d, and this is g: %i.\n", x, *g); 
    *g=45; 
    printf("This is x: %d, and this is g: %i.\n", x, *g); 

    return 0; 
} 

Компилятор дает мне следующие ошибки:

ex15t.c: In function ‘main’: 
ex15t.c:5:12: warning: initialization makes pointer from integer without a cast [enabled by default] 

Спасибо заранее за любую помощь.

+0

Вы можете обновить описание на самом деле предложить что вы действительно пытаетесь сделать? Ваш код не уточняет. – crowder

ответ

5

В настоящее время вы определяете, какое значение (98) находится в x, и указатель int не является указателем, предупреждающим вас. То, что вы действительно хотите, это получить адрес, где x, т.е. указать на местоположение x. Так ....

int *g = x; 

должен быть

int *g = &x; 
6

Линия: int * g = x; является определение переменной g типа int *, а затем присвоения значения x к нему.

Expanded вне, это может быть прочитана как:

int *g; 
g = x; 

и это, очевидно, не то, что вы хотите, как и x имеет тип int и g является тип int *.

Предполагая, что вы хотите g указать на переменную x, вместо этого

int * g = &x; 

или вместо этого, что может быть яснее:

int *g; 
g = &x; 
Смежные вопросы