C语言__指针

指针

指针:指针用来保存地址,地址是一个数字。(左值代表空间里的值,右值代表空间里的内容

解引用运算符   *(后跟一个指针名或者地址时,*给出储存在指针指向地址上的值)

地址运算符 & 

< 例:&num1  表示变量num1的地址

            ptr=&num1;//指向num1的指针

             num1=22;

            val=*ptr;//把ptr指向地址上的值赋给val 

>

例:  int *p;定义一个指针变量p,类型是int*,p指向一个int类型的数据。

         p=&a;指针的绑定。

         *p=23;指针解的引用。

   <int *p1=&a  定义指针并初始化,同等于:int *p,a; p=&a;>     

注:可变数组的定义:

int *p;
int n;
printf("输入数组的长度n:\n");
scanf("%d",&n);
p=(int *)malloc(sizeof(int )*n);
野指针:

   例:int *p;

   危害:①直接指向内核区。

              ②指向可用也没有别的数据区域

              ③最危险,可用但有别的数据

指针操作

①指针和整数相加:可以使用+运算符把指针与整数相加,或者整数与指针相加。无论那种情况,整数都会和指针所指向的类型的大小相乘,然后把结果与初始地址相加。例如:ptr1+4与&ptr1[4]等价。

②递增指针:递增指向数组元素的指针可以让该指针移动至数组的下一个元素。因此ptr1++相当与把ptr1的值加上4(int *ptr1;) 

③指针减去一个整数:可以使用 - 运算符从一个指针中减去一个整数,指针必须是第一个运算对象,整数是第二个运算对象。该整数将乘以指针指向类型的大小,然后用初始地址减去乘积。

④递减指针:递减指向数组元素的指针可以让该指针移动至数组的上一个元素。需注意越界问题

⑤指针求差:求差的指针指向同一个数组的两个不同的元素,通过计算求出两个元素之间的距离。差值的单位与数组类型的单位相同。

⑥比较:使用关系运算符可以比较两个指针的值,前提是两个指针都指向相同的类型的对象!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值