Sizeof an array in the C programming language?

why isn't the size of an array sent as a parameter the same as within main?
#include <stdio.h>

void PrintSize(int p_someArray[10]);

int main () {
    int myArray[10];
    printf("%d\n", sizeof(myArray)); /* as expected 40 */
    PrintSize(myArray);/* prints 4 not 40 */
}

void PrintSize(int p_someArray[10]){
    printf("%d\n", sizeof(p_someArray));
}

Answers;-
No, array-type is implicitly converted into pointer type when you pass it in to a function.
So,
void PrintSize(int p_someArray[10]){
printf("%zu\n", sizeof(p_someArray));
}
and
void PrintSize(int *p_someArray){
printf("%zu\n", sizeof(p_someArray));
}

0 comments:

Post a Comment

Don't Forget to comment