delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2004/03/04/09:01:11

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
From: Hans-Bernhard Broeker <broeker AT physik DOT rwth-aachen DOT de>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: array size inside of a function
Date: 4 Mar 2004 13:57:20 GMT
Organization: Aachen University of Technology (RWTH)
Lines: 29
Message-ID: <c27ck0$g7b$1@nets3.rz.RWTH-Aachen.DE>
References: <baec0bf0 DOT 0403022220 DOT 3534cf24 AT posting DOT google DOT com> <c2489p$oce$1 AT news DOT rz DOT uni-karlsruhe DOT de> <baec0bf0 DOT 0403032116 DOT 3d91c482 AT posting DOT google DOT com>
NNTP-Posting-Host: ac3b07.physik.rwth-aachen.de
X-Trace: nets3.rz.RWTH-Aachen.DE 1078408640 16619 137.226.33.205 (4 Mar 2004 13:57:20 GMT)
X-Complaints-To: abuse AT rwth-aachen DOT de
NNTP-Posting-Date: 4 Mar 2004 13:57:20 GMT
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Andrey <huli_ebtyt AT list DOT ru> wrote:
> > sizeof(char **) == address size = 4 on 32bit machines.
> > 

> so in main(), array name is not a pointer?

Right.  It will "decay" into a pointer if you use it as one, but it
"is" not a pointer.  This is a very common misunderstanding among new
C programmers, and unfortunately one that is being stated as fact by
many careless C book authors.

Passing an array as an argument to some function is one of the usages
that counts as "using it as a pointer".  The only cases that don't
count as such, actually, are use of the 'sizeof' or '&' operators on
the name of the array.

> and there no way free from passing size?

Essentially: no.  It's thus usually a good plan to join the pointer
and the length into a struct:

	typedef	struct array_of_foo {
	   foo *pointer;
	   size_t length;
	} array_of_foo;

-- 
Hans-Bernhard Broeker (broeker AT physik DOT rwth-aachen DOT de)
Even if all the snow were burnt, ashes would remain.

- Raw text -


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