Я предполагаю, что это C или подмножество C Objective C/C++, поскольку C +, Java, PHP и другие языки C-типа не используют указатели.
Используйте теги кода и один оператор в строке.
Заявление
int *a = *b;
Создает как указатель на Int. Не указатель на указатель на int, указатель на int.
Затем он устанавливает текущий адрес в a как разыменование b, независимо от того, что b. Вы не указали объявление b. Если b не имеет тип int **
, вы должны получить предупреждение о компиляторе.
a не является указательным массивом. a - указатель на int. Он может указывать на один int, или его можно указать на массив из int. Компилятор не может отличить разницу.
Если b имеет тип int **
или указатель на указатель на int, то ваше заявление разделяет один из этих указателей и делает точку в первом подматрице внутри b.
Код
a[1] = 3;
предполагает, что указатель на массив целых чисел, так как компилятор не может делать какие-либо проверки диапазона, он пытается индексировать в массив и сохранить значение в второй int в блоке памяти, на который указывает точка. Если a не указывает на блок памяти, достаточно большой, чтобы содержать как минимум 2 целых числа, этот оператор может сбой на современном компьютере с использованием защищенной памяти, он также может просто перезаписать последующую память.
As @EdS. отмечает в комментарии ниже, это, как известно, в бизнесе, как
«неопределенное поведение»
Если вы собираетесь использовать указатель C, как это бремя лежит на вас, чтобы убедиться, что это на самом деле указывает на действительную память, и если вы собираетесь использовать указатель, как если бы он был массивом, вы должны быть на вас, чтобы убедиться, что вы не превышаете границы памяти, на которые указывает указатель.
'a [1]' точно так же, как писать '* (a + 1)'. Очевидно, вы можете написать '* a = 3', так как' a' является 'int *', поэтому вы также можете написать '* (a + 1) = 3', поэтому вы также можете написать' a [1] = 3'. – Jon
'a' не является массивом указателей. 'a' является указателем. – musicmatze
Что такое * (a + 1)? вы имеете в виду * a [1]? – Wei