Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

C pointer syntax

Name: Anonymous 2007-11-14 12:42

If I declare an array of arrays like this:

const char** p0 = { "##  ", "##  ", "    ", "    " };

I get these warnings:
type_d.h:13: warning: initialization from incompatible pointer type
type_d.h:13: warning: excess elements in scalar initializer
type_d.h:13: warning: (near initialization for ‘p0’)
type_d.h:13: warning: excess elements in scalar initializer
type_d.h:13: warning: (near initialization for ‘p0’)
type_d.h:13: warning: excess elements in scalar initializer
type_d.h:13: warning: (near initialization for ‘p0’)

but if I alter the syntax to

const char* p0[] = { "##  ", "##  ", "    ", "    " };

the warnings are all gone. what's exactly the difference between using * [] and ** ? I really thought they were just the same, just like * and [] or ** and [][].

If I did it like p0[][] = { ... would it be different at all?

Name: Anonymous 2007-11-18 13:26

>>23
And the reverse: &array[0] == array (== &array), and array[x] == *(array+x).
incorrect, `&array[0]' equals `array' only in value context.
Also, neither `&array[0]' or `array' equal `&array'.

As for array[x] == *(array+x) correct, however certain compilers seem to like *(array+x) more than array[x].

C pointers and arrays are very much related. They just differ in their declaration/initialization, and sizeof (and maybe something else, I don't remember right now).

read that FUQIN thread i linked to you fucking moron
>>8

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List