指针的好处

指针的好处
提高程序效率
实现动态数组,相对多个变量一般访问模拟数组
p=&a;//变量a的地址;
p=A;//数组名A;
p=q;//指针q;
p=fun;//函数名fun;
p=NULL;//NULL
变量的访问方式
直接访问-使用变量名
间接访问-通过该变量地址进行访问
(int )(0x0013FF78) = 10;
value是别人的地址
可以定义为void

间接访问才有意义。
有人说指针就是地址吗?
不对,指针是一种容纳地址的变量,通常叫做指针变量
1.char
pa,pb;//pb不是
2.char *pa,pb;// pb不是
&取址运算符
*指针运算符
示例1:
Int main()
{
int i=0;
int *p=&i;
*p=10;
return =0;
}
*p仅仅代表i的值吗?
*p代表i的本身

int x=0,y=0;
int *px=&x;
y=*py;

示例2
int x=0,y=1;
int *py=&x;
*px=y;

错误示例
int main()
{
int *p;
*p=1;
}
错误示例
int main()
{
int *p=NULL;
*p=1;
}

#define NULL((void *)0)
if(pNULL)
更好if(NULL
p),常数放在左边,变量右边
指针有一下几种运算
赋值,*运算,&取地址,加减一个数,自增减,求差,比较
p+n,p-n,++p,–p,p1-p2数组
p+n的意义?n是int这样的长度
void main( )
{
int a[10] = {1,};
int *p = &a[1];
int * r;
int i, j;
int *q = &a[4];
r = p+2;//?地址
i = q-p;//?3个元素
j =&a[1]-&a[0];// ?一个元素
}

char str[]=”Hello Word”;
char *pst =”Hello Word”

str[0]=’Y’;
pstr[0]=’Y’;错误

多级指针
二级指针:指向指针的指针(指针的地址)
int i=20;
int *pi=&i;
int **ppi=π
指针变量ppi 指针变量pi 变量i
地址二 地址1 值

#include <stdio.h>
int* search(int *t,int size,int x);
int main(void)
{
int num[]={2,4,6,8,10,12,14,16,18,20};
int *p=search(num,10,18);
printf("%p,%p\n",num,p);
}

int* search(int t,int size,int x)
{
int i=0;
for(i=0;i<size;i++)
if(t[i]==x)
return &t[i];//加取地址符
***
return NULL;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式吴彦祖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值