Проверить указатель, массив это или нет? - PullRequest
0 голосов
/ 09 октября 2018

как я могу узнать, что указатель является массивом или нет?Пример:

    int main()
{
    int *a=new int [3] { 1,2,3 };
    std::cout << *a;
}

У нас есть указатель «a», как проверить, что он является массивом или единственной переменной?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Используя арифметику указателей, вы можете определить, ссылается ли инициализированный указатель на массив или отдельную переменную, например, кодирование чего-то вроде этого поможет вам, добавив, что «1», вы будете указыватькомпилятор получает доступ к следующей позиции, в которой находится адрес памяти переменной 'a', если он указывает на NULL, то в соседней позиции 'a' не было выделено никакой памяти, поэтому обычно это будетуказатель на одну переменную.

int *a = new int [3] {1,2,3};
if (*(a+1)==NULL)
    cout<<"single variable";
else
    cout<<"array";
0 голосов
/ 09 октября 2018

как я могу узнать, является ли указатель массивом или нет?

Вы не можете найти это только на основе значения указателя (или типа).

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

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