指针1

指针没学会,重新拾起c语言书🧐,一边看书一边写博客总结知识点。😜

💥
1)指针是一个地址(例如i的指针是2000);指针变量是存放地址的变量(例如i-pointer);*i-pointer表示指针变量i-pointer指向的对象,即变量i(*表示指向)
【如 i=3;i-pointer=&i;*i-pointer=3;】
2)一个变量的指针的含义包括两个方面:一是以存储单元编号表示的纯地址(如编号为2000的字节),一是它指向的存储单元的数据类型(如int,char,float);

💥*pointer的含义

int  *pointer;  
         //定义两个指针变量,*表示该变量是指针变量
printf("*pointer=%d",*pointer);
        //表示指针变量pointer所指向的变量

💥引用指针变量
1)给指针变量赋值
p=&a;
2)引用指针变量指向的变量
printf(“%d\n",*p);
//输出指针变量p所指向的变量的值
3)引用指针变量的值
printf(“%o”,p);
//以八进制数形式输出指针变量p的值

🔥输入三个整数a,b,c,要求按从小到大的顺序将它们输出

#include<stdio.h>
int main()
{
   void change(int *p1,int *p2,int *p3);
   int a,b,c,*p1,*p2,*p3;
   printf("input a,b,c:");
   scanf("%d%d%d",&a,&b,&c);
   p1=&a;p2=&b;p3=&c;
   change(p1,p2,p3);
   printf("%d\t%d\t%d\t",a,b,c);
   return 0;
}
void change(int *p1,int *p2,int *p3)
{
   void swap(int *pt1,int *pt2);
   if(*p1<*p2) swap(p1,p2);
   if(*p1<*p3) swap(p1,p3);
   if(*p2<*p3) swap(p2,p3);
   //交换a,b,c的值,而非指针变量的值
}
void swap(int *pt1,int *pt2)
{
   int temp;
   temp=*pt1;
   *pt1=*pt2;
   *pt2=temp;
}

函数的调用只能得到一个返回值,而使用指针变量做参数,可以得到多个变化了的值。

💥通过指针引用数组
在c语言中,数组名代表数组中首元素的地址
【 p=&a[0]; 等价于 p=a;】

指针的加减运算:(当指针指向数组元素时)
(1)加一个整数,p+1
【p+1指向同一数组中的下一个元素,1不是将p的值加1,而是加上一个数组元素所占的字节数,即p+1*d,d是一个数组元素所占的字节数】
(2)减一个整数,p-1
(3)自加运算,p++,++p
(4)自减运算,p–,--p
(5)两个指针相减,p1—p2 (指向同一数组)
p1与p2之间差的元素个数

🔥🔥
p 指针变量
p 指针变量指向的元素
p+i 数组元素a[i]的地址,即(a+i)
(p+i) 数组元素a[i],即(a+i)
p[i] p 指向a[2],则p[3]代表a[2+3]即a[5]
p++ 等价于(p++),先引用
p,再使p自加
++(*p) 表示p所指向的元素值加1

后续。。。。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值