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


Groups > comp.lang.c > #7611

Re: References in C

From Shao Miller <sha0.miller@gmail.com>
Newsgroups comp.lang.c
Subject Re: References in C
Date 2011-07-04 17:38 -0400
Organization A noiseless patient Spider
Message-ID <iutbtc$5ta$1@dont-email.me> (permalink)
References <iu1iku$4k9$1@speranza.aioe.org> <lnzkl7c7bm.fsf@nuthaus.mib.org> <iu2t65$pm7$1@dont-email.me> <lnr56idifs.fsf@nuthaus.mib.org> <87d3i2xq23.fsf@gmail.com>

Show all headers | View raw


On 6/25/2011 04:39, Gareth Owen wrote:
> Keith Thompson<kst-u@mib.org>  writes:
>
>> foo(NULL);
>>
>> I should have been clearer that "the same thing" refers to some object.
>
> Quite - "doesn't point to nothing" is the best thing about C++-style
> references.[0] (Of course, there's still the possibility of "points to
> thing that no longer exists", but that's a lot less common source of
> bugs, in my experience).
>

I still don't get it.  Three storage durations:

1. Static

   foo_by_ref(bar);
   foo_by_val(&bar);

It's pretty clear that the parameter for 'foo_by_*' will be/refer to an 
object.

2. Automatic

   foo_by_ref(bar);
   foo_by_val(&bar);

It's pretty clear that the parameter for 'foo_by_*' will be/refer to an 
object.

3. Allocated

   foo_by_ref(*bar_ptr);
   foo_by_val(bar_ptr);

This is a worry either way unless there is a run-time check for a valid 
object, right?

So it seems that the former two don't have any safety advantage.  It 
seems that the latter warrants a check and doesn't have any safety 
advantage.  Please see below, too.

Also note Mr. A. Curry's observation (elsethread) that a C++ program 
broke right where you would expect: As soon as the reference was 
actually used; not at the call-site.

On 6/27/2011 09:02, Shao Miller wrote:
> Ah yes.  But what I'm trying to understand is the benefit/savings for not having a "no entity" case to check for.
>
>   /* Pointers, not checking for a null value */
>   void foo(int * const ip) {
>       /* Might be U. B. if 'ip' is null */
>       *ip = 42;
>       return;
>     }
>
>   int main(void) {
>       int * ip = malloc(sizeof *ip);
>       foo(ip);
>       return 0;
>     }
>
> versus:
>
>   /* References, not checking for a null value */
>   void bar(int & i) {
>       i = 42;
>       return;
>     }
>
>   int main(void) {
>       int * ip = malloc(sizeof *ip);
>       /* Might be U. B. if 'ip' is null */
>       bar(*ip);
>       return 0;
>     }
>
> The first point of U. B. has just been shuffled up one level.
>
> But if a function receives/reads (as opposed to constructs) a pointer and takes appropriate responsibility...
>
>   /* Pointers, checking for a null value */
>   void foo(int * const ip) {
>       /* Callers: Please ensure 'ip' is non-null */
>       *ip = 42;
>       return;
>     }
>
>   int main(void) {
>       int * ip = malloc(sizeof *ip);
>       if (ip)
>         /* 'ip' is non-null */
>         foo(ip);
>       return 0;
>     }
>
> and:
>
>   /* References, checking for a null value */
>   void bar(int & i) {
>       i = 42;
>       return;
>     }
>
>   int main(void) {
>       int * ip = malloc(sizeof *ip);
>       if (ip)
>         /* 'ip' is non-null */
>         bar(*ip);
>       return 0;
>     }
>
> then both are safe.  Thus, I think pointers and references are quite comparable in this regard, and I don't perceive this particular advantage.
> [...]
> Aha.  I see.  So can a construct like the following help to catch a reference problem, assuming the program gets through the line marked "First possible U. B."?:
>
>   /* References, checking for a valid reference */
>   void bar(int & i) {
>       /* Check for a valid reference */
>       if (NULL != &i)
>         i = 42;
>       return;
>     }
>
>   int main(void) {
>       int * ip = malloc(sizeof *ip);
>       /* First possible U. B. */
>       bar(*ip);
>       return 0;
>     }

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


Thread

References in C jacob navia <jacob@spamsink.net> - 2011-06-24 10:42 +0200
  Re: References in C BGB <cr88192@hotmail.com> - 2011-06-24 02:53 -0700
    Re: References in C Ian Collins <ian-news@hotmail.com> - 2011-06-24 22:10 +1200
  Re: References in C "BartC" <bc@freeuk.com> - 2011-06-24 11:14 +0100
    Re: References in C jacob navia <jacob@spamsink.net> - 2011-06-24 16:59 +0200
  Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-24 09:26 -0400
    Re: References in C jacob navia <jacob@spamsink.net> - 2011-06-24 20:08 +0200
      Re: References in C Keith Thompson <kst-u@mib.org> - 2011-06-24 11:40 -0700
      Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-24 14:53 -0400
      Re: References in C jt@toerring.de (Jens Thoms Toerring) - 2011-06-24 20:44 +0000
        Re: References in C jacob navia <jacob@spamsink.net> - 2011-06-24 23:09 +0200
          Re: References in C Joe Wright <joewwright@comcast.net> - 2011-06-24 17:38 -0400
            Re: References in C "BartC" <bc@freeuk.com> - 2011-06-24 22:58 +0100
            Re: References in C Ian Collins <ian-news@hotmail.com> - 2011-06-25 10:11 +1200
              Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-26 17:00 -0500
                Re: References in C "BartC" <bc@freeuk.com> - 2011-06-26 22:55 +0100
                Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-26 18:25 -0500
                Re: References in C "BartC" <bc@freeuk.com> - 2011-06-26 23:38 +0100
                Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-26 19:19 -0500
                Re: References in C jacob navia <jacob@spamsink.net> - 2011-06-27 01:27 +0200
                Re: References in C Keith Thompson <kst-u@mib.org> - 2011-06-26 19:13 -0700
                Re: References in C Ian Collins <ian-news@hotmail.com> - 2011-06-27 16:50 +1200
                Re: References in C jacob navia <jacob@spamsink.net> - 2011-06-27 06:55 +0200
                Re: References in C Ian Collins <ian-news@hotmail.com> - 2011-06-27 17:10 +1200
                Re: References in C lawrence.jones@siemens.com - 2011-06-27 10:04 -0400
                Re: References in C jt@toerring.de (Jens Thoms Toerring) - 2011-06-26 22:54 +0000
                Re: References in C jacob navia <jacob@spamsink.net> - 2011-06-27 01:29 +0200
                Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-26 19:39 -0500
                Re: References in C pacman@kosh.dhis.org (Alan Curry) - 2011-06-27 07:16 +0000
                Re: References in C jacob navia <jacob@spamsink.net> - 2011-06-27 09:46 +0200
                Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-27 12:03 -0400
                Re: References in C Stephen Sprunk <stephen@sprunk.org> - 2011-06-27 12:09 -0500
                Re: References in C pacman@kosh.dhis.org (Alan Curry) - 2011-06-27 22:16 +0000
                Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-27 11:57 -0400
                Re: References in C pacman@kosh.dhis.org (Alan Curry) - 2011-06-27 22:21 +0000
                Re: References in C Ian Collins <ian-news@hotmail.com> - 2011-06-28 13:59 +1200
                Re: References in C Ike Naar <ike@iceland.freeshell.org> - 2011-06-27 07:05 +0000
                Re: References in C jt@toerring.de (Jens Thoms Toerring) - 2011-06-27 20:10 +0000
                Re: References in C Stephen Sprunk <stephen@sprunk.org> - 2011-06-27 16:39 -0500
                Re: References in C Keith Thompson <kst-u@mib.org> - 2011-06-26 15:23 -0700
                Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-26 18:57 -0500
                Re: References in C Keith Thompson <kst-u@mib.org> - 2011-06-26 19:21 -0700
                Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-27 09:40 -0400
                Re: References in C Keith Thompson <kst-u@mib.org> - 2011-06-27 09:00 -0700
                Re: References in C pacman@kosh.dhis.org (Alan Curry) - 2011-06-27 23:15 +0000
                Re: References in C Keith Thompson <kst-u@mib.org> - 2011-06-28 22:50 -0700
                Re: References in C Seebs <usenet-nospam@seebs.net> - 2011-06-29 17:46 +0000
                Re: References in C Dr Nick <3-nospam@temporary-address.org.uk> - 2011-06-29 20:23 +0100
                Re: References in C pacman@kosh.dhis.org (Alan Curry) - 2011-06-29 22:35 +0000
                Re: References in C Keith Thompson <kst-u@mib.org> - 2011-06-29 16:52 -0700
                Re: References in C Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2011-07-03 01:31 +0300
                Re: References in C Chad <cdalten@gmail.com> - 2011-07-02 17:20 -0700
                Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-29 18:54 -0500
                Re: References in C Michael Press <rubrum@pacbell.net> - 2011-06-30 10:32 -0700
                Re: References in C "io_x" <a@b.c.invalid> - 2011-07-01 10:19 +0200
                Re: References in C pacman@kosh.dhis.org (Alan Curry) - 2011-07-01 19:21 +0000
                Re: References in C Keith Thompson <kst-u@mib.org> - 2011-07-01 12:31 -0700
                Re: References in C pacman@kosh.dhis.org (Alan Curry) - 2011-07-01 19:32 +0000
                Re: References in C Keith Thompson <kst-u@mib.org> - 2011-07-01 13:05 -0700
                Re: References in C Seebs <usenet-nospam@seebs.net> - 2011-07-01 23:58 +0000
                Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-07-01 20:13 -0500
                Re: References in C Michael Press <rubrum@pacbell.net> - 2011-07-01 12:44 -0700
                Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-07-01 15:57 -0500
                Re: References in C Tim Rentsch <txr@alumni.caltech.edu> - 2011-07-03 14:54 -0700
                Re: References in C Michael Press <rubrum@pacbell.net> - 2011-07-03 20:29 -0700
                Re: References in C Tim Rentsch <txr@alumni.caltech.edu> - 2011-07-04 16:05 -0700
                Re: References in C Michael Press <rubrum@pacbell.net> - 2011-07-05 08:32 -0700
                Re: References in C Lowell Gilbert <lgusenet@be-well.ilk.org> - 2011-07-05 15:34 -0400
                Re: References in C Tim Rentsch <txr@alumni.caltech.edu> - 2011-07-06 15:30 -0700
                Re: References in C Ian Collins <ian-news@hotmail.com> - 2011-06-27 13:27 +1200
                Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-27 09:02 -0400
              Re: References in C "Joel C. Salomon" <joelcsalomon@gmail.com> - 2011-06-26 18:35 -0400
                Re: References in C James Kuyper <jameskuyper@verizon.net> - 2011-06-26 19:11 -0400
                Re: References in C "Joel C. Salomon" <joelcsalomon@gmail.com> - 2011-06-28 00:52 -0400
                Re: References in C James Kuyper <jameskuyper@verizon.net> - 2011-06-28 07:56 -0400
          Re: References in C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-06-24 22:52 +0100
          Re: References in C jt@toerring.de (Jens Thoms Toerring) - 2011-06-24 23:58 +0000
  Re: References in C Tom St Denis <tom@iahu.ca> - 2011-06-24 06:48 -0700
    Re: References in C David Resnick <lndresnick@gmail.com> - 2011-06-24 07:14 -0700
      Re: References in C jacob navia <jacob@spamsink.net> - 2011-06-24 16:58 +0200
        Re: References in C Tom St Denis <tom@iahu.ca> - 2011-06-24 09:08 -0700
          Re: References in C Stephen Sprunk <stephen@sprunk.org> - 2011-06-24 11:33 -0500
          Re: References in C gazelle@shell.xmission.com (Kenny McCormack) - 2011-06-24 17:47 +0000
            Re: References in C JG <jgrove24@hotmail.com> - 2011-07-01 14:24 -0700
          Re: References in C Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-06-25 04:39 -0700
            Re: References in C BGB <cr88192@hotmail.com> - 2011-06-25 16:15 -0700
              Re: References in C Ian Collins <ian-news@hotmail.com> - 2011-06-26 11:27 +1200
                Re: References in C BGB <cr88192@hotmail.com> - 2011-06-25 19:13 -0700
                Re: References in C cri@tiac.net (Richard Harter) - 2011-06-26 04:22 +0000
                Re: References in C Robert Wessel <robertwessel2@yahoo.com> - 2011-06-26 01:31 -0500
                Re: References in C BGB <cr88192@hotmail.com> - 2011-06-26 00:03 -0700
                Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-26 13:54 -0500
                Re: References in C luser- -droog <mijoryx@yahoo.com> - 2011-07-07 11:19 -0700
            Re: References in C Dr Nick <3-nospam@temporary-address.org.uk> - 2011-06-26 08:15 +0100
    Re: References in C Ike Naar <ike@sverige.freeshell.org> - 2011-06-24 16:08 +0000
      Re: References in C Tom St Denis <tom@iahu.ca> - 2011-06-24 11:12 -0700
        Re: References in C Ike Naar <ike@iceland.freeshell.org> - 2011-06-24 21:42 +0000
  Re: References in C Stephen Sprunk <stephen@sprunk.org> - 2011-06-24 11:49 -0500
  Re: References in C Keith Thompson <kst-u@mib.org> - 2011-06-24 13:17 -0700
    Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-24 16:46 -0400
      Re: References in C Keith Thompson <kst-u@mib.org> - 2011-06-24 14:32 -0700
        Re: References in C Gareth Owen <gwowen@gmail.com> - 2011-06-25 09:39 +0100
          Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-07-04 17:38 -0400
  Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-06-24 16:33 -0400
    Re: References in C jacob navia <jacob@spamsink.net> - 2011-06-24 23:04 +0200
  Re: References in C Tim Rentsch <txr@alumni.caltech.edu> - 2011-06-26 17:53 -0700
    Re: References in C Ian Collins <ian-news@hotmail.com> - 2011-06-27 17:04 +1200
      Re: References in C Tim Rentsch <txr@alumni.caltech.edu> - 2011-06-27 14:28 -0700
        Re: References in C Ian Collins <ian-news@hotmail.com> - 2011-06-28 14:11 +1200
          Re: References in C Tim Rentsch <txr@alumni.caltech.edu> - 2011-06-28 16:27 -0700
          Re: References in C Michael Press <rubrum@pacbell.net> - 2011-06-29 13:41 -0700
            Re: References in C Seebs <usenet-nospam@seebs.net> - 2011-06-29 21:15 +0000
              Re: References in C Michael Press <rubrum@pacbell.net> - 2011-06-30 09:26 -0700
                Re: References in C Seebs <usenet-nospam@seebs.net> - 2011-06-30 20:55 +0000
                Re: References in C Michael Press <rubrum@pacbell.net> - 2011-06-30 16:20 -0700
                Re: References in C Seebs <usenet-nospam@seebs.net> - 2011-06-30 23:45 +0000
                Re: References in C James Kuyper <jameskuyper@verizon.net> - 2011-07-01 07:58 -0400
    Re: References in C jacob navia <jacob@spamsink.net> - 2011-06-27 10:43 +0200
      Re: References in C Keith Thompson <kst-u@mib.org> - 2011-06-27 08:32 -0700
      Re: References in C Tim Rentsch <txr@alumni.caltech.edu> - 2011-06-28 11:01 -0700
        Re: References in C jacob navia <jacob@spamsink.net> - 2011-06-28 22:17 +0200
          Re: References in C Ian Collins <ian-news@hotmail.com> - 2011-06-29 09:05 +1200
          Re: References in C Keith Thompson <kst-u@mib.org> - 2011-06-28 22:24 -0700
          Re: References in C Tim Rentsch <txr@alumni.caltech.edu> - 2011-06-29 01:07 -0700
            Re: References in C Ian Collins <ian-news@hotmail.com> - 2011-06-29 21:16 +1200
              Re: References in C Seebs <usenet-nospam@seebs.net> - 2011-06-29 17:46 +0000
              Re: References in C Tim Rentsch <txr@alumni.caltech.edu> - 2011-06-29 12:19 -0700
          Re: References in C sandeep <nospam@nospam.com> - 2011-07-03 20:53 +0000
            Re: References in C Chad <cdalten@gmail.com> - 2011-07-03 14:02 -0700
            Re: References in C Keith Thompson <kst-u@mib.org> - 2011-07-03 14:33 -0700
              Re: References in C jacob navia <jacob@spamsink.net> - 2011-07-04 00:22 +0200
                Re: References in C Keith Thompson <kst-u@mib.org> - 2011-07-04 13:41 -0700
              Re: References in C gazelle@shell.xmission.com (Kenny McCormack) - 2011-07-04 00:00 +0000
              Re: References in C Seebs <usenet-nospam@seebs.net> - 2011-07-04 00:20 +0000
      Re: References in C Shao Miller <sha0.miller@gmail.com> - 2011-07-04 17:43 -0400

csiph-web