LINUX.ORG.RU

Си/Си++: отличие массивов от указателей

 , , ,


1

4

sizeof массива возвращает размер массива, sizeof указателя - лишь размер самого указателя. А ещё? В куче учебников есть оговорки, что в ряде других специфических ситуаций поведение компиляторов в отношении подобных переменных различается, но примеров навскидку найти не могу. В гугле был, в стандарте копаться лень.

★★★★★
Ответ на: комментарий от Virtuos86

Там не совсем об этом. В данном случае мной движет чистое любопытство, а не практическая необходимость, так что тратить часы на поиск нужной строчки в стандарте мне кажется неоправданным.

meliafaro ★★★★★
() автор топика
Ответ на: комментарий от meliafaro

В данном случае мной движет чистое любопытство, а не практическая необходимость

Здорово. А то, что не имея точного представления об этом, ты можешь нагородить багов, погроммируя, не является необходимостью?) Ох уж эти сишники…

Virtuos86 ★★★★★
()
Ответ на: комментарий от meliafaro

Из чистого любобытства давно бы проверил

#include <stddef.h>

int main() {
    int ints[100];
    int *p;
    int i;

    ints = NULL;       // No
    ints = &i;         // No
    ints++;            // No                                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                               
    p = NULL;          // Ok                                                                                                                                                                                                                                                   
    p = &i;            // Ok                                                                                                                                                                                                                                                   
    p++;               // Ok                                                                                                                                                                                                                                                   
}

fluorite ★★★★★
()
Ответ на: комментарий от meliafaro

Походу человек не понял пресловутых стандартов, но написал книжку. Не читатель, короче.

Sorcerer ★★★★★
()
Ответ на: комментарий от meliafaro

Мне не нравится допущения такого рода: «есть два исключения, но одно кривое, другое косое, поэтому мы их не рассматриваем». По-моему, разницу между массивами и указателями не придется сильно долго искать в стандарте, да и даже в любом толковом руководстве. Сам я такой информацией не обладаю, иначе бы уже написал.

Virtuos86 ★★★★★
()
Ответ на: комментарий от fluorite

Да, точняк, объявленному единожды массиву нельзя присваивать произвольное значение. Благодарю, что-то вылетело из головы.

meliafaro ★★★★★
() автор топика
Ответ на: комментарий от meliafaro

объявленному единожды массиву нельзя присваивать произвольное значение

А объявленному дважды — можно!

utf8nowhere ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.