c - How is pointer to array different from array names? -


i reading more arrays vs pointers in c , wrote following program.

#include <stdio.h>   int arr[10] = { } ;  typedef int (*type)[10]  ; int main() {    type val = &arr ;     printf("size %lu\n", sizeof(val)) ;     printf("size of int %lu\n", sizeof(int)) ; } 

if, execute program, sizeof(val) given 8 , sizeof(int) given 4.

if val pointer array 10 elements, shouldn't it's size 40. why sizeof(val) 8 ?

if val pointer array...

yes, is, , sizeof(val) produces size "pointer array", not array itself.

...shouldn't it's size 40.?

no, sizeof(val) calculates size of operand, "pointer" here. in platform, size of pointer seems 64 bits, i.e., 8 bytes. so, gives 8.

also, mentioned, use %zu print size_t, type produced sizeof operator.


Comments

Popular posts from this blog

How has firefox/gecko HTML+CSS rendering changed in version 38? -

javascript - Complex json ng-repeat -

jquery - Cloning of rows and columns from the old table into the new with colSpan and rowSpan -