Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #163260
| From | Meredith Montgomery <mmontgomery@levado.to> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | on confusing procedure names with the address of procedures |
| Date | 2021-10-29 21:37 -0300 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <86bl37e49v.fsf@levado.to> (permalink) |
I wrote
--8<---------------cut here---------------start------------->8---
int main()
{
char c1;
printf("c1 is at %p\n", &c1);
printf("and the addr of the addr of c1 is at %p\n", &&c1);
}
--8<---------------cut here---------------end--------------->8---
and I didn't this to make any sense. Indeed, I get
--8<---------------cut here---------------start------------->8---
%make nonsense
gcc nonsense.c -o nonsense
nonsense.c: In function 'main':
nonsense.c:12:3: error: label 'c1' used but not defined
12 | printf("c1 is at %p\n", &&c1);
| ^~~~~~
make: *** [<builtin>: nonsense] Error 1
%
--8<---------------cut here---------------end--------------->8---
The error message totally lost me.
But then I wrote
--8<---------------cut here---------------start------------->8---
#include <stdio.h>
int main()
{
printf("main is at %p\n", main);
printf("main is at %p\n", &main);
}
--8<---------------cut here---------------end--------------->8---
and I expected a compilation error of some sort, but I got
--8<---------------cut here---------------start------------->8---
%CFLAGS=-Wall make main-addr
gcc -Wall main-addr.c -o main-addr
%./main-addr.exe
main is at 00007ff617431594
main is at 00007ff617431594
%
--8<---------------cut here---------------end--------------->8---
So main must be stored at 00007ff617431594 and so it becomes unintuitive
that getting the address of main yields the same value.
My interpretation of this last program is that
main = &main
but for the first program
&c1 =/= & &c1
because the right side is nonsensical? It's trying to get the address
of an address, when we should only get the address of a name. Can't get
the address of numbers.
Pretty confusing.
Back to comp.lang.c | Previous | Next — Next in thread | Find similar | Unroll thread
on confusing procedure names with the address of procedures Meredith Montgomery <mmontgomery@levado.to> - 2021-10-29 21:37 -0300
Re: on confusing procedure names with the address of procedures Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-10-29 18:29 -0700
Re: on confusing procedure names with the address of procedures Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-10-29 18:33 -0700
Re: on confusing procedure names with the address of procedures Manfred <noname@add.invalid> - 2021-10-30 05:32 +0200
Re: on confusing procedure names with the address of procedures James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-10-30 01:26 -0400
Re: on confusing procedure names with the address of procedures Manfred <noname@add.invalid> - 2021-10-30 19:05 +0200
Re: on confusing procedure names with the address of procedures James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-10-30 15:17 -0400
Re: on confusing procedure names with the address of procedures Bart <bc@freeuk.com> - 2021-10-30 11:36 +0100
Re: on confusing procedure names with the address of procedures Noob <root@127.0.0.1> - 2021-11-01 13:03 +0100
csiph-web