Обратите внимание, что если a
является именем массива, то sizeof(a)
даст размер всего массива a
, а не размер указателя на один из его элементов.Как `sizeof` отличает указатель от массива?
Так, например, как sizeof
различают массив a
и указатель b
?
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int a[4] = {1, 2, 3, 4};
int *b = a;
printf("sizeof\(a) = %ld\n", sizeof(a));
printf("sizeof\(b) = %ld\n", sizeof(b));
return EXIT_SUCCESS;
}
Он печатает, как показано ниже:
sizeof(a) = 16
sizeof(b) = 8
Ну, это известно во время компиляции, что является массивом и то, что является а так как 'sizeof' оценивается и во время компиляции, это не сложно. – szczurcio
http://stackoverflow.com/questions/37538/how-do-determine-the-size-of-my-array-in-c – c4f4t0r
и https://stackoverflow.com/questions/492384/how- to-find-the-sizeofa-pointer-pointing-to-a array – WhozCraig