LINUX.ORG.RU

c/c++, указатели, sizeof


0

0

Здравствуйте.

Прошу уточнение по указателям.

char *a; // sizeof(a) выдаст длину указателя в байтах

char *b="01234567"; // sizeof(b) - то же, но

char c[16]; // sizeof(c) выдаст количество байт под массивом, и тогда

a=c; // что выдаст sizeof(a) в этом случае: количество байт под массивом или длину указателя?

Спасибо.

"Длину указателя". Вернее, то же самое, что и до этого присваивания.

Рекомендую прочитать любую книжку по C с начала и до конца.

Teak ★★★★★
()

Странно задавать такие вопросы на форуме, если можно за минуту навалять тестик и все станет ясно. Вот покури, для выяснения разницы между указателями и массивами:

#include <stdio.h>

int main() { char c[10]; char *p = c; printf("%u %u %u", sizeof c, sizeof p, sizeof *p); return 0; }

shumer
()

Странно задавать такие вопросы на форуме, если можно за минуту навалять тестик и все станет ясно. Вот покури, для выяснения разницы
между указателями и массивами:

#include <stdio.h>

int main()
{
char c[10];
char *p = c;
printf("%u %u %u", sizeof c, sizeof p, sizeof *p);
return 0;
}

shumer
()

> a=c; // что выдаст sizeof(a) в этом случае: количество байт под массивом или длину указателя?

sizeof вычисляется на стадии компиляции, он зависит только от статического типа

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

> sizeof вычисляется на стадии компиляции, он зависит только от статического типа

В C99 не только.

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