Berkeley CSUA MOTD:Entry 25503
Berkeley CSUA MOTD
 
WIKI | FAQ | Tech FAQ
http://csua.com/feed/
2025/05/25 [General] UID:1000 Activity:popular
5/25    

2002/8/5-7 [Computer/SW/Languages/C_Cplusplus] UID:25503 Activity:very high
8/5     In ANSI C, assume a typedef of Foo for an UnsignedInt16 ,
        then assume that I declare a multiarray Foo foo[a][b] = {..}.
        How do I assign a pointer to foo? Do I do a Foo **bar?
        If Foo **bar then bar=foo doesn't seem to work.
        \_ References to an array name only decay to pointers for one
           level. So do bar = &foo[0].x
           \_ huh?  what the hell is x?
              \_ x is the first element of type Foo
              \_ x is someone slipping up with emacs.
        \_ This doesn't make any sense. A multidimensional array does
           not contain actual pointers to any of its elements, so there
           is nothing for bar to point at. If you do foo[0], this
           standard notation. Also, foo *bar can be assigned to bar = foo
           if foo is Foo[a]
           produced only a temporary pointer; getting the address of
           if foo is Foo foo[a].
           this is not a sensible thing to do.
           \_How so? Main has char **argv, and I can reference it using
           standard notation. Also, Foo *bar can be assigned to bar = foo
           if foo is Foo foo[a]. So why wouldn't there be an analogous
           expression for a pointer to a multidimensional array? If
           what you say is true, then is it impossible to reference a
           multiarray using a pointer? How would I go about passing
           multiarrays to functions then which would like to store a
           pointer to the multiarray?
           \_ your C-fu is lacking.  The declaration T foo[a][b] allocates a
              contiguous chunk of memory that's a*b*sizeof(T) bytes long.
              argv, on the other hand, is an array of pointers and is not
                                             \_ sorry, I misspoke.  I meant
                                                to say that it is a pointer
                                                to an array of pointers.
              a true multidimensional array.  The fact that you can
              dereference elements to both using [] operators is syntactic
              convenience.  Go read the comp.lang.C FAQ, section 6 in
              particular:
                http://www.eskimo.com/~scs/C-faq/top.html
                \_Yes, I know that foo[a][b] allocates a contiguous chunk of
                memory, so does foo[a]. What I have a problem with is the fact
                that foo[a] can decay into a pointer but not foo[a][b]. I
                read the FAQ, and I think essentially the problem is is that
                ANSI C provides no method of recursive pointer decay from
                a multiarray. I don't know why not, perhaps it has something
                to do with  compiler performance issues. So I suppose i
                the short answer is
                "no, it can't be done" and I solved the issue by dynamically
                allocating a multiarray using a pointer pointer.
                  \_ Why should foo[a][b] decay into a pointer?
              \_ Hmm, I learned C 12 years ago and I still find this section
                 of the FAQ very useful.
        \_ What you can do is Foo (*bar)[b]; bar = foo;
           \_ shouldn't that be: Foo (*bar)(b); bar = foo;
              \_ uh, he's not declaring a function pointer.
        \_ If the OP has their answer from the above would you please delete
           this thread.  I'm losing 1d4+1 sanity points everytime my eyes pass
           over this part of the motd.  thanks.
           \_ the first "1" in 1d4+1 is redundant.  unless you're using it as
              a placeholder, remove it, or you threaten a segfault in the rest
              of us.
              \_ No, that's how it's done.  When you publish your own game
                 system you can drop the "1" in front.  Until then you take
                 1d30+7 silliness points and are stunned 1d4+1 motd threads.
2025/05/25 [General] UID:1000 Activity:popular
5/25    

You may also be interested in these entries...
2014/1/14-2/5 [Computer/SW/Languages/C_Cplusplus] UID:54763 Activity:nil
1/14    Why is NULL defined to be "0" in C++ instead of "((void *) 0)" like in
        C?  I have some overloaded functtions where one takes an integer
        parameter and the other a pointer parameter.  When I call it with
        "NULL", the compiler matches it with the integer version instead of
        the pointer version which is a problem.  Other funny effect is that
        sizeof(NULL) is different from sizeof(myPtr).  Thanks.
	...
2013/4/9-5/18 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Apps, Computer/SW/Languages/Perl] UID:54650 Activity:nil
4/04    Is there a good way to diff 2 files that consist of columns of
        floating point numbers, such that it only tells me if there's a
        difference if the numbers on a given line differ by at least a given
        ratio?  Say, 1%?
        \_ Use Excel.
           1. Open foo.txt in Excel.  It should convert all numbers to cells in
	...
2013/4/29-5/18 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:54665 Activity:nil
4/29    Why were C and Java designed to require "break;" statements for a
        "case" section to terminate rather than falling-through to the next
        section?  99% of the time poeple want a "case" section to terminate.
        In fact some compilers issue warning if there is no "break;" statement
        in a "case" section.  Why not just design the languages to have
        termination as the default behavior, and provide a "fallthru;"
	...
2012/7/19-11/7 [Computer/SW/Languages/C_Cplusplus] UID:54439 Activity:nil
7/19    In C or C++, how do I write the code of a function with variable
        number of parameters in order to pass the variable parameters to
        another function that also has variable number of parameters?  Thanks.
        \_ The usual way (works on gcc 3.0+, Visual Studio 2005+):
               #define foo(fmt, ...) printf(fmt, ##__VA_ARGS__)
           The cool new way (works on gcc 4.3+):
	...
2011/3/7-4/20 [Computer/SW/Languages/C_Cplusplus] UID:54056 Activity:nil
3/7     I have a C question.  I have the following source code in two identical
        files t.c and t.cpp:
                #include <stdlib.h>
                int main(int argc, char *argv[]) {
                  const char * const * p1;
                  const char * * p2;
	...
2011/2/5-19 [Computer/SW/Languages/C_Cplusplus] UID:54027 Activity:nil
2/4     random C programming/linker fu question.  If I have
        int main() { printf("%s is at this adddr %p\n", "strlen", strlen); }
        and soda's /proc/sys/kernel/randomize_va_space is 2 (eg; on)
        why is strlen (or any other libc fn) at the same address every time?
        \_ I don't pretend to actually know the right answer to this, but
           could it have something to do with shared libraries?
	...
2010/2/12-3/9 [Computer/SW/Languages/C_Cplusplus] UID:53708 Activity:nil
2/12    I need a way to make a really big C++ executable (~200MBs) that does
        nothing.  No static initialization either.  Any ideas?
        \_ static link in lots of libraries?
        \_ #define a   i=0; i=0; i=0; i=0; i=0; i=0; i=0; i=0; i=0; i=0;
           #define b   a a a a a a a a a a
           #define c   b b b b b b b b b b
	...
2009/9/28-10/8 [Computer/SW/Languages/C_Cplusplus] UID:53409 Activity:nil
9/28    http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
        Java is #1!!! Followed by C, PHP, C++, Visual Basic, Perl,
        C#, Python, Javascript, then finally Ruby. The good news is
        Pascal is going waaaay back up!
        \_ C is still more popular than C++?  I feel much better about myself
           now.
	...
2009/8/7-14 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Java] UID:53252 Activity:high
8/6     In C one can do "typedef int my_index_t;".  What's the equivalent in
        C#?  Thanks.
        \_ C#? Are you serious? Is this what the class of 2009 learn?
           \_ No.  I have to learn .NET code at work.  I am Class of '93.
           \_ python is what 2009 learns, see the motd thread about recent
              cal courses and languages
	...
2009/7/21-24 [Computer/SW/Languages/Java] UID:53168 Activity:moderate
7/20    For those who care btw, it looks like eclipse is now A Standard Tool
        at UCB ugrad cs, probably replaced emacs.  Furthermore, people get
        angry at seeing Makefiles, (since eclispe takes care of that).  I
        guess it's just a sign of the times.
        \_ The more people at my work use eclipse the less the code is
           managable in emacs.  I'm not sure which application's fault
	...
Cache (1617 bytes)
www.eskimo.com/~scs/C-faq/top.html -> www.eskimo.com/%7Escs/C-faq/top.html
Content from the book C Programming FAQs: Frequently Asked Questions Addison-Wesley, 1995, ISBN 0-201-84519-9 is made available here by permission of the author and the publisher as a service to the community. It is intended to complement the use of the published text and is protected by international copyright laws. The content is made available here and may be accessed freely for personal use but may not be published or retransmitted without written permission. An FAQ list is a collection of questions commonly asked on Usenet, together with presumably definitive answers, provided in an attempt to keep repeated questions on the newsgroup down to a low background drone so that discussion can move on to more interesting matters. Since they distill knowledge gleaned from many sources and answer questions which are demonstrably Frequent, FAQ lists serve as useful references outside of their originating Usenet newsgroups. This list is, I dare to claim, no exception, and the HTML version youre looking at now, as well as other versions referenced just below, are intended to be useful to C programmers everywhere. Several other versions of this FAQ list are available, including a book-length version published by Addison-Wesley . I would, of course, like it if it were perfect, but its been two years or so since I first started talking about putting this thing on the web, and if I were to wait until all the glitches were worked out, you might never see it. Each page includes a mail feedback button, so you can help me debug it. At first, you dont have to worry about reporting minor formatting hiccups;