初学者理解C语言指针

一、定义:

    1.指针定义:

        指针由能存放一个地址的一组存储单元 (通常是两个或四个字节 )构成。(《C语言程序设计》)。
        指针是一个值为内存地址的变量(或数据对象)正如char类型变量的值是字符,指针变量的值是地址。(《C Primer Plus》)

          感觉第二种更容易理解,指针是变量 和char int类似。

    2.& 取地址符:只能应用于内存中的对象(变量和数组),不能是表达式、常量或寄器 变量(《C语言程序设计》)

     3.*间接寻址(间接引用,取值运算符):它将访问指针所指向的对象。

        int *p 与*p的区别

	int a=0;
	//int *p 与*p的区别 
	int *p=&a;
        *p=a;
    //对比 
	int b=1;
	    b=2;
	    //定义和运算时赋值类型都相同 而*p在 int *p=&a;中赋值为地址 *p=a; 中赋值为int类型的数
         //这是因为*在不同位置的意思不同, 
         //在 int *p为定义指针 所以接收的值是指针  
		//在 *p中的*是取值运算符,代表的是p指针中的值 

4.指针与地址的关系:

指针也有多种类型的。话不多说上代码。

	//指针类型 
	char *c;
	int *i;
	float *f;
    double *d;
    //指针对应的数据类型 
    char c1;
	int i1;
	float f1;
    double d1;
    //拿c来距离 c与&c1类型大小相等 存储的都是地址 *c与c1类型大小相等存储的都是值
	//c1直接通过地址找到值 *c是先根据c中存的地址找到对应的内存在找到值 
    printf("c=%d,&c1=%d,*c=%d,c1=%d\n",sizeof(c),sizeof(&c1),sizeof(*c),sizeof(c1));
    printf("i=%d,&i1=%d,*i=%d,i1=%d\n",sizeof(i),sizeof(&i1),sizeof(*i),sizeof(i1));
    printf("f=%d,&f1=%d,*f=%d,f1=%d\n",sizeof(f),sizeof(&f1),sizeof(*f),sizeof(f1));
    printf("d=%d,&d1=%d,*d=d,d1=%d\n",sizeof(d),sizeof(&d1),sizeof(*d),sizeof(d1));

下图红线为*c的查找方式。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值