Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #44017

Re: pass by address

From Kaz Kylheku <kaz@kylheku.com>
Newsgroups comp.lang.c
Subject Re: pass by address
Date 2014-05-04 21:06 +0000
Organization Aioe.org NNTP Server
Message-ID <20140504135316.177@kylheku.com> (permalink)
References (6 earlier) <lk3ml7$fb8$1@speranza.aioe.org> <lk4efb$vj2$1@dont-email.me> <1phbm9t64tdkhq9pq5ng42v15s44tr01e0@4ax.com> <slrnlmbvg5.m4n.tth@hangartistique.cispeo.fr> <lnr44aj596.fsf@nuthaus.mib.org>

Show all headers | View raw


On 2014-05-04, Keith Thompson <kst-u@mib.org> wrote:
> Tonton Th <tth@nowhere.invalid> writes:
>> On 2014-05-04, Barry Schwarz <schwarzb@dqel.com> wrote:
>>>>#include <stdio.h>
>>>>
>>>>int main()
>>>>{
>>>>    int a = 15;
>>>>    int *p;
>>>>    p = &a;
>>>>    printf("%p\n", &p);
>>>
>>> Undefined behavior #1.
>>>
>>>>    printf("%p\n", p);
>>>
>>> Undefined behavior #2.
>>>
>>>>    printf("%d\n", *p);
>>>>}
>>
>>    I don't understand where in the undefined behaviour. Not so usable
>>    values printed, yes, but &p and p are pointers, so %p can print their
>>    values, no ?
>>
>>    Maybe because p and &p are not 'void *' pointers...
>
> That's exactly it.  "%p" requires an argument of type void*, not of any
> arbitrary pointer type.  In practice, most implementations use the same
> representation and argument passing convention for all pointer types, so
> it's likely to work, but for well-defined behavior you need to cast the
> arguments to void*.

For well-defined behavior, you must also avoid the inclusion of
any header which us not in ISO C nor in your program, such as

#include <unistd.h>

Standard-defined behavior is an unrealistic goal for many kinds
of programs. The concept broadly encompasses issues of correctness,
as well as portability.

The assumption that %p can print any pointer is not maximally
portable, that is all.

As a side note, it would be astonishing to find an implementation
where char * arguments break with %p in some way that goes
away when a cast to void * is added.


-- 
Music DIY Mailing List: http://www.kylheku.com/diy
ADA MP-1 Mailing List:  http://www.kylheku.com/mp1

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

pass by address "Bill Cunningham" <nosapm@nspam.invalid> - 2014-05-02 16:53 -0400
  Re: pass by address "Bill Cunningham" <nosapm@nspam.invalid> - 2014-05-02 17:03 -0400
    Re: pass by address "Bill Cunningham" <nosapm@nspam.invalid> - 2014-05-02 17:20 -0400
  Re: pass by address Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2014-05-02 17:58 -0400
    Re: pass by address "Bill Cunningham" <nosapm@nspam.invalid> - 2014-05-02 18:09 -0400
      Re: pass by address Barry Schwarz <schwarzb@dqel.com> - 2014-05-02 16:37 -0700
        Re: pass by address gazelle@shell.xmission.com (Kenny McCormack) - 2014-05-02 23:43 +0000
          Re: pass by address Richard <rgrdev_@gmail.com> - 2014-05-03 15:58 +0200
            Re: pass by address gazelle@shell.xmission.com (Kenny McCormack) - 2014-05-03 14:08 +0000
              Re: pass by address Barry Schwarz <schwarzb@dqel.com> - 2014-05-03 10:38 -0700
                Re: pass by address Richard <rgrdev_@gmail.com> - 2014-05-03 21:13 +0200
        Re: pass by address "Bill Cunningham" <nosapm@nspam.invalid> - 2014-05-03 01:46 -0400
        Re: pass by address "Bill Cunningaham" <nospam@nspam.invalid> - 2014-05-03 11:22 -0400
          Re: pass by address James Kuyper <jameskuyper@verizon.net> - 2014-05-03 12:13 -0400
          Re: pass by address Keith Thompson <kst-u@mib.org> - 2014-05-03 12:34 -0700
            Re: pass by address Richard <rgrdev_@gmail.com> - 2014-05-03 22:33 +0200
            Re: pass by address glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-05-03 21:21 +0000
              Re: pass by address "Bill Cunningham" <nospam@nspam.invalid> - 2014-05-04 00:08 -0400
                Re: pass by address Barry Schwarz <schwarzb@dqel.com> - 2014-05-03 21:52 -0700
                Re: pass by address Tonton Th <tth@nowhere.invalid> - 2014-05-04 08:44 +0000
                Re: pass by address Keith Thompson <kst-u@mib.org> - 2014-05-04 01:51 -0700
                Re: pass by address "Bill Cunningham" <nospam@nspam.invalid> - 2014-05-04 15:06 -0400
                Re: pass by address Barry Schwarz <schwarzb@dqel.com> - 2014-05-04 15:35 -0700
                Re: pass by address Richard <rgrdev_@gmail.com> - 2014-05-05 12:01 +0200
                Re: pass by address Barry Schwarz <schwarzb@dqel.com> - 2014-05-05 11:46 -0700
                Re: pass by address "Bill Cunningham" <nospam@nspam.invalid> - 2014-05-05 14:18 -0400
                Re: pass by address Barry Schwarz <schwarzb@dqel.com> - 2014-05-05 11:55 -0700
                Re: pass by address "Bill Cunningham" <nospam@nspam.invalid> - 2014-05-05 15:20 -0400
                Re: pass by address "Bill Cunningham" <nospam@nspam.invalid> - 2014-05-05 15:23 -0400
                Re: pass by address Ken Brody <kenbrody@spamcop.net> - 2014-05-06 11:02 -0400
                Re: pass by address "Bill Cunningham" <nospam@nspam.invalid> - 2014-05-06 14:46 -0400
                Re: pass by address Richard <rgrdev_@gmail.com> - 2014-05-05 12:00 +0200
                Re: pass by address Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-05-05 14:50 -0700
                Re: pass by address "Bill Cunningham" <nospam@nspam.invalid> - 2014-05-05 23:13 -0400
                Re: pass by address "Osmium" <r124c4u102@comcast.net> - 2014-05-05 23:09 -0500
                Re: pass by address "Bill Cunningham" <nospam@nspam.invalid> - 2014-05-06 08:55 -0400
                Re: pass by address Ken Brody <kenbrody@spamcop.net> - 2014-05-06 11:16 -0400
                Re: pass by address Richard <rgrdev_@gmail.com> - 2014-05-06 18:13 +0200
                Re: pass by address Kaz Kylheku <kaz@kylheku.com> - 2014-05-04 21:06 +0000
                Re: pass by address Kaz Kylheku <kaz@kylheku.com> - 2014-05-04 23:50 +0000
                Re: pass by address Keith Thompson <kst-u@mib.org> - 2014-05-04 12:36 -0700
                Re: pass by address "Bill Cunningham" <nospam@nspam.invalid> - 2014-05-05 14:21 -0400
                Re: pass by address Keith Thompson <kst-u@mib.org> - 2014-05-04 01:29 -0700
                Re: pass by address "Bill Cunningham" <nospam@nspam.invalid> - 2014-05-04 15:09 -0400
        Re: pass by address "Bill Cunningaham" <nospam@nspam.invalid> - 2014-05-03 11:32 -0400
  Re: pass by address Barry Schwarz <schwarzb@dqel.com> - 2014-05-02 16:43 -0700
    Re: pass by address "Bill Cunningham" <nosapm@nspam.invalid> - 2014-05-03 01:54 -0400
      Re: pass by address Richard <rgrdev_@gmail.com> - 2014-05-03 15:59 +0200
    Re: pass by address "Bill Cunningham" <nosapm@nspam.invalid> - 2014-05-03 02:08 -0400
      Re: pass by address "Bill Cunningaham" <nospam@nspam.invalid> - 2014-05-03 11:46 -0400
    Re: pass by address Kaz Kylheku <kaz@kylheku.com> - 2014-05-03 21:43 +0000

csiph-web