关于指针的一些问题

Posted shellingfordly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于指针的一些问题相关的知识,希望对你有一定的参考价值。

int a,*p=&a;
    printf("&a---%d\np---%d\n&p---%d\n*&p---%d\n&*p---%d\n*p---%d",&a,p,&p,*&p,&*p,*p);
    if(a)printf("aa"); 
  /*输出结果

    &a---6356788
    p---6356788
    &p---6356784
    *&p---6356788
    &*p---6356788
    *p---3022848aa请按任意键继续. . .

    */

  • &a:表示a的地址
  • p:表示a的地址
  • &*p/*&p:*p表示a,&*p=&a表示a的地址,可能是由于&和*的优先级一样,所以&*p和*&p都是取得a的地址
  • &p:指针p自己的地址
  • *p/a:a的值,无值时似乎是随机地址
  • if(a):无值时为真
#include<stdio.h>
struct st

    int num;
    int s;
;
int main(void)

        int d=4;
        struct st a,*p=&a;
        //*p=d; //报错
        p->num=d; //ok 
        printf("%d",*p); //4
        

我以为*p=&a;和*p指向数组一样,可以用*p直接对第一个成员进行赋值,但是我发现并不可以;

我绝对可能是数据类型的原因,数组时因为每一个元素都时int类型,所以*p指向int数组类型的第一个元素也是int类型,可以直接赋值;

我的理解:而结构体中,*p指向结构体类型数据a,虽然地址是指向第一个成员,但是a是结构体类型,num才是int类型,所以要用p->num获取num在对其赋值。

以上是关于关于指针的一些问题的主要内容,如果未能解决你的问题,请参考以下文章

关于指针的一些问题

试图实现一个 C++ 库,需要一些关于如何与它交互的指针

关于指针的一些总结

关于指针的一些经典例题详解

关于指针类型和指针类型转换的理解

关于指针类型和指针类型转换的理解