Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.glorb.com!npeer02.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Sun, 18 Mar 2012 06:30:49 -0500 Message-ID: <4F65D575.10F1@mindspring.com> Date: Sun, 18 Mar 2012 07:30:45 -0500 From: pete Reply-To: pfiland@mindspring.com Organization: PF X-Mailer: Mozilla 3.04Gold (WinNT; I) MIME-Version: 1.0 Newsgroups: comp.lang.c Subject: Re: addresses of variables References: <9524023.127.1332068169176.JavaMail.geo-discussion-forums@ynbq18> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 47 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 4.156.228.91 X-Trace: sv3-9cL2pF4F+3EZP8XPf7U86/T9UpbFtQFY4ZIJ04qiaya62gr6jWzJUQayf5wAVDzg2+WCmdqA0mhCVgv!eHlAkduF6oY7z44uQLNA4jlgarNyOuZNjK6WRFUxdrAeFNyuJaUMar1mxVPG0+/LoBTIMu7hJ3JF!1vIPwhjgnw== X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 2091 X-Received-Bytes: 2232 Xref: csiph.com comp.lang.c:18849 Zero wrote: > > hello > > does the ansi standard define > at what addresses variables will be found or is this dependent on each compiler, > I wonder, e.g. > when I have this code > main() > { > int a, b, c, d; > char e; > } > > whether those local variables are placed one after the other in memory (e.g. 0x100, 0x104, 0x108, 0x10C and 0x10D or > whether the can be aligned at different addresses 0x200, 0x100, 0x300... > > Does the standard define those things... No. The most likely variations that I would expect to see for the above code, is that the int addresses could be in either order and the char address may or may not be aligned on an int boundary and may be either before or after the ints. #include int main(void) { int a, b, c, d; char e; printf("0x%lx\n0x%lx\n0x%lx\n0x%lx\n0x%lx\n", (long unsigned)&a, (long unsigned)&b, (long unsigned)&c, (long unsigned)&d, (long unsigned)&e); return 0; } -- pete