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 16:13

>>30
What other contexts are there for those expressions?
haha, oh wow.
Answer me first these:

The c char sequence 'A'
is it an expression?
If it is, what is it's type?
It's signedness?
It's size?

They still point to the same memory location.
you are now thinking with your assembler.
And no -- they don't have to be equal in value.

Explain
I will simply give some hints: consider how the compiler reads what is given to him, notice that x is an expression that has to be evaluated, understand how the compiler evaluates code, how the compiler generates assembly, and be englightened.

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