vc6.0中指针的一个小问题。

2025-02-26 11:43:39
推荐回答(2个)
回答1:

几种写法:

  1.  int a[10];

     int *p = a;

  2. int a[10];

    int *p;

    p = a;

     

你这里犯的错误因为是新手容易犯的一种错误,

int *p;定义的变量是p,这个p是int *类型的,

不是定义的*p,  int *是整形指针类型,跟int是不一样的,

新手总是容易把这种写法理解成 *只是一个标示符,这个p仍然是int类型的,

其实这个p根本就不是int类型的,而是(int *)类型的。

回答2:

第一个p1=a没错。
第二问:对数组名求值就是数组首元素的地址。
第三问:编译通不过纯属编译器问题,*p=a才是错的。
第四问:对的,a==&a[0]。