# What does this declarations means?

• shermaine80
In summary: This is an array of 10 pointers to functions, each returning a pointer to an integer and taking no arguments.

#### shermaine80

(a) int*p[3][3]
(b) int*(*p())[10];

(a) points to address of data in the row 3, column 3?
(b) can you advise me? thanks?

Before I answer (a), do you know what

int a[3]

int a[3][3]

(b) means that some silly hacker likes to write obfuscated code, rather than use typedef's.

int a[3] is an array. It points to info at array[3]

shermaine80 said:
(a) int*p[3][3]
int a[3] is an array. It points to info at array[3]
It doesn't just point to information at array[3] (what do you mean by that?), it actually contains 3 integers (in the programming sense).

Code:
T name[N]
Are arrays with N elements of type T.
Code:
T name[N1][N2];
Are arrays of N1 elements of arrays of N2 elements of type T.
In your first case we have a 3-dimensional array, where each element is another 3-dimensional array in which each element is a pointer to an integer.

It's often called a 3x3 multi-dimensional array, one example use would be:
Code:
int x,y,z;
int* a[3][3];
a[0][0] = &x; // Set the very first element of both arrays to point to x
a[0][2] = &y; // Let the last element of the first array point to y.
a[2][2] = &z; // Let the last element in both arrays point to z
As for the second, either someone misunderstood the syntax of function pointers or they are trying to confuse you.
Code:
int*(*p())[10];
Just like last time, this is an array, so p is an array of 10 int*(*())
The outer set of parentheses means nothing in this code, so it's equivalent to:
Code:
int** ();
Which is just a function returning a pointer to a pointer to an integer. So p is an array of functions, but we don't have first-class functions in C or C++, so we end up with an unusable array.

What was most likely meant if this is real code is:
Code:
int*(*p)()[10];
Which is an array of 10 functions pointers, each pointing to a function returning a pointer to an integer and taking no arguments.

Last edited:
Just like last time, this is an array, so p is an array of 10 int*(*())
Almost: p is function that returns an int*[10].

Also,

int*(*p)()[10];

doesn't quite work: gcc complains with

`p' declared as function returning an array

You're looking for

int*(*p[10])();

Last edited:

## 1. What is a declaration in science?

A declaration in science is a statement that describes a specific fact, theory, or idea. It is used to communicate important information about a particular topic and is often supported by evidence or data.

## 2. Why are declarations important in science?

Declarations are important in science because they allow scientists to clearly state their findings and conclusions. This helps to ensure that their work is accurately represented and can be replicated by other researchers.

## 3. How do scientists make declarations?

Scientists make declarations by carefully observing and conducting experiments or studies to gather data. They then analyze and interpret this data to form conclusions, which are then stated in declarations.

## 4. What is the difference between a declaration and a hypothesis?

A declaration is a statement that describes a fact or theory, while a hypothesis is a proposed explanation for a phenomenon that can be tested through experimentation. Declarations are typically supported by evidence, while hypotheses are used to guide further research.

## 5. Can declarations change in science?

Yes, declarations in science can change as new evidence is discovered or as theories are further developed. Scientific knowledge is constantly evolving, so declarations may be updated or revised as our understanding of a topic deepens.