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 12:32

The confusion only arises from the (very specific) fact that pointers can be "indexed" like arrays.
And the reverse: &array[0] == array (== &array), and array[x] == *(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).

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