C语言_指针 详细解释

本文介绍了C语言中的指针概念,包括指针的定义、操作符的使用、指针与指针变量的区别、如何定义指针变量,以及&和*运算符的详细解释。此外,还探讨了指针在数组中的应用。


------- 自己总结的知识纯手打--------

什么是指针

指针是一种特殊的变量,他存放的是地址

int *i_pointer; //用来存放变量i的地址
i_pointer=&i;//取地址

在这里插入图片描述

操作符

    *     取值操作符
    &     取地址操作符

第一个 * 为定义指针
第二个 * 才是取值操作符
在这里插入图片描述

指针和指针变量的区别

  • 指针:知道了一个变量的地址。就可以通过这个地址访问这个变量,因此,又把变量的地址成为该变量的指针;

  • 指针变量:C语言中可以定义一类特殊的变量,这些变量专门用来存放变量的地址,称为指针变量。

  • 指针变量的值(即指针变量中存放的值是地址,也就是指针。)

定义一个指针

在这里插入图片描述

  • 可以用赋值语句使一个指针变量得到另一个变量的地址,从而使他指向一个该变量。
pointer_1=pointer_2;
  • 指针变量前的 * ,表示该变量类型为指针型变量。
    一般形式为:类型说明符 *变量名
  • 其中,* 表示这是一个指针变量,变量名为定义的指针变量名,类型说明符表示本指针变量指向的变量数据类型。
float  *pointer_1;
//指针变量名为pointer_1;而不是*pointer_1
  • 在定义指针变量时必须指定基类型。
  • 只有整型变量的地址才能放到指向整型变量的指针变量中。
---该例子就是错误示范---
float  a;
int  *pointer;//应该是float
pointer=&a;
  • 指针变量只能存放地址(指针),如果将一个整数赋给一个指针变量,编译器也会把它当成地址处理。

  • C语言中提供了地址运算符 & 来表示变量的地址。一般形式为==&变量名==
  • 如&a表示变量a的地址,&b表示b的地址;变量本身必须预先声明。
    在这里插入图片描述

&和*补充说明

&*pointer_1;

  • 两个符号的优先级相同,但按自右向左方向结合,所以&*pointer_1=&a,即变量a的地址。
pointer_2=&*pointer_1;//把地址赋给pointer_2

*&a

  • 先进行&a运算,得到a的地址,再进行*运算。即&a所指向的变量,也就是变量a。

(*pointer_1)++

  • 相当于a++
    在这里插入图片描述

数组和指针

在这里插入图片描述

int a[10];
int *p;
p=&a[0];//取数组第一个元素地址

在这里插入图片描述

int a[10];
int i;
for(i=0;i<10;i++)
{
	scanf("%d",&a[i]);
}
printf("\n");
for(i=0;i<10;i++)
{
	printf("%d",*(a+1));
}
int a[10];
int i;
int *p;
for(i=0;i<10;i++)
{
	scanf("%d",&a[i]);
}
printf("\n");
for(p=a;p<(a+10);p++)
{
	printf("%d",*p);
}

------待更新 2020.3.27

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值