Почему я не могу установить значение указателя int * x, скажем, 10? - PullRequest
0 голосов
/ 20 февраля 2019

Я сильно неправильно понимаю указатели, так что, надеюсь, кто-то может прояснить это, пожалуйста.

int *x; - указатель на int.x относится к самому указателю, а *x относится к значению (или цели), хранящемуся в ячейке памяти x.

Если я хочу, чтобы x указывал на int, ктозначение равно 10, почему я не могу сделать int *x = 10;?

Я не совсем понимаю, почему, когда мы делаем что-то вроде printf("%d", *x);, он печатает значение, хранящееся в x, но мы не можем сделатьint *x = 10;

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

int * x -> x является адресом памяти для целого числа, типа (int *).

если вы делаете * x, он отображает содержимое, потому что * является операндом, операндом памяти, который показывает, чтохранится в этом адресе памяти, и (int *) - это тип данных, указатель на что-то в памяти, совсем другой.

Надеюсь, я объяснил это быстро.Хорошее кодирование.

0 голосов
/ 20 февраля 2019

Ваша путаница связана с разницей между инициализацией и назначением.Это примеры инициализации:

int a = 5;    // valid; "a" is an int which is initialized with the value 5
int *b = &a;  // valid; "b" is an int * which is initialized with the address of "a"
int *c = 10;  // invalid; "c" is an int * which is initialized with the value 10

Хотя это назначения:

a = 5;    // valid; "a" is assigned the value 5
b = &a;   // valid; "b" is assigned the address of "a"
*b = 10;  // valid; "b" points to "a", and the value "b" points to is set to 10

Обратите внимание, что использование * отличается между двумя.В инициализации * означает, что данная переменная является указателем, а * в присваивании (или любом выражении) означает, что указатель разыменован.

0 голосов
/ 20 февраля 2019

int * x означает ---- x - это целочисленный тип указателя.

, а 10 - это целочисленный тип.

в вашем случае вы пытаетесь назначить "целочисленный" типк типу "целочисленный указатель", который недопустим из-за двух разных типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...