Difference between pointer to pointer and pointer to array?

前端 未结 3 991
一整个雨季
一整个雨季 2020-12-05 15:18

Given that the name of an array is actually a pointer to the first element of an array, the following code:

#include 

int main(void)
{
    in         


        
相关标签:
3条回答
  • 2020-12-05 15:49

    Line 11 is

            p1 = &a;
    

    where p1 has type int ** and a has type int[3], right?

    Well; &a has type int(*)[3] and that type is not compatible with int** as the compiler told you

    You may want to try

            p1 = &p0;
    

    And read the c-faq, particularly section 6.

    In short: arrays are not pointers, and pointers are not arrays.

    0 讨论(0)
  • 2020-12-05 15:52

    a is not a pointer to int, it decays to such in certain situations. If &a was of type int ** you couldn't very well use it to initialize p2, could you?

    You need to do p1 = &p0; for the effect you want. "pointer to pointer" means "at this address, you will find a pointer". But if you look at the address &a, you find an array (obviously), so int ** is not the correct type.

    0 讨论(0)
  • 2020-12-05 16:08

    For many operations, a implies &a and both return the same thing: The address of the first item in the array.

    You cannot get the address of the pointer because the variable does not store the pointer. a is not a pointer, even though it behaves like one in some cases.

    0 讨论(0)
提交回复
热议问题