Monday, March 8, 2010

Programmer - How to reliably get size of C-style array?

Programmer Question

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}.)



Find the answer here

No comments:

Post a Comment

LinkWithin

Related Posts with Thumbnails