How to reliably get size of C-style array?

Posted by Frank on Stack Overflow See other posts from Stack Overflow or by Frank
Published on 2010-03-08T20:40:58Z Indexed on 2010/03/08 20:51 UTC
Read the original article Hit count: 193

Filed under:
|
|
|

How do I reliably get the size of a C-style array? The method often recommended seems to be to use sizeof, but it doesn't work in the foo function, where x is passed in:

#include <iostream>

void foo(int x[]) {
  std::cerr << (sizeof(x) / sizeof(int)); // 2  
}

int main(){
    int x[] = {1,2,3,4,5};
    std::cerr << (sizeof(x) / sizeof(int)); // 5                              
    foo(x);
    return 0;
}

Answers to this question recommend sizeof but they don't say that it (apparently?) doesn't work if you pass the array around. So, do I have to use a sentinel instead? (I don't think the users of my foo function can always be trusted to put a sentinel at the end. Of course, I could use std::vector, but then I don't get the nice shorthand syntax {1,2,3,4,5}.)

© Stack Overflow or respective owner

Related posts about c

    Related posts about c++