я получил следующий вопрос на одном из моей практики problemswhere он говорит, чтобы определить, что печатается этот код:Понимание адреса памяти и указатели в C
#include <stdio.h>
int main(){
int ids[3] = {100,200,300};
int *salary, salary1, salary2, *salary3;
salary1 = ids[0] * ids[1];
salary = &ids[1] ;
salary2 = *(ids+1)* *(ids+2);
salary3 = ids+2;
printf("*salary = %d\nsalary1 = %d\n", *salary, salary1);
printf("salary2 = %d\nsalary3 = %p\n", salary2, salary3);
}
Я немного запутался в этом коде. Во-первых, в строке 4:
int *salary, salary1, salary2, *salary3;
Почему звездочка в начале salary3
если звездочка уже используется в начале строки?
Во-вторых, когда он говорит:
salary1 = ids[0] * ids[1];
, как мы должны определить значение salary1
, когда мы не знаем значение ids[1]
?
«*» относится только к переменной сразу после нее, а не ко всем переменным в строке. – Barmar
Потому что это не 'int * зарплата' и т. Д., А' int * зарплата' и т. Д. '*' Квалифицирует переменную, а не тип. –