delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2004/03/03/04:30:55

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
From: Michael Beck <beck AT ipd DOT info DOT uni-karlsruhe DOT de>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: array size inside of a function
Date: Wed, 03 Mar 2004 10:25:12 +0100
Organization: University of Karlsruhe, Germany
Lines: 30
Message-ID: <c2489p$oce$1@news.rz.uni-karlsruhe.de>
References: <baec0bf0 DOT 0403022220 DOT 3534cf24 AT posting DOT google DOT com>
NNTP-Posting-Host: i44pc33.info.uni-karlsruhe.de
Mime-Version: 1.0
X-Trace: news.rz.uni-karlsruhe.de 1078305913 24974 172.22.85.161
X-Complaints-To: usenet AT rz DOT uni-karlsruhe DOT de
User-Agent: KNode/0.7.1
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Andrey wrote:

> char *array[size];
> 
> function(char *array[])
> {
> 
>  // array[0] returns string #0, but sizeof(array) returns 4
>  // Why returns 4?
>  // Is there any way to get size here?
> }
[..]

This is the way C is specified. function(char *array[]) is simply a "more 
understandable" version of function(char **array), and 

sizeof(char **) == address size = 4 on 32bit machines.

They simpliest way to get around this is the following:

function(char *array[], size_t num_elements);

main() { function(a, sizeof(a)/sizeof(a[0])); }

BTW: Most languages that support this construction (Modula-2 for instance) 
implicit add this parameter :-)

best regards,
-- 
Michael Beck            beck AT ipd DOT info DOT uni-karlsruhe DOT de

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019