C语言指针

c语言指针学习
指针只有两层含义, 1:指向地址, 2:指针有类型,类型是其指向的内存空间数据的类型,表示从首地址开始取多少字节。

C语言相比于其他高级语言,不仅是运行速度快,而且还能够直接操作硬件,操作硬件就是依靠C语言指针这一强大功能实现的,学会C语言指针,就好像是武林高手打通了任督二脉,能大幅度提升编程能力。

地址是个什么东西:计算机存储的数据都有一个唯一的地址,32位系统就是8位16进制数表示的。比如0x12345678就是计算机的一个地址。一位十六进制代表四位二进制,0x12345678转换成二进制就是0001-0010-0011-0100-0101-0110-0111- 1000而每八位二进制占一个字节。


int *(*p(int))【3】   
  1. p与()结合(考虑优先级)      p是一个函数
  2. p(int)                                    函数有一个 整形变量
  3. *p(int)                                      函数返回值类型为指针
  4. *p(int)【3】                          指针指向一个数组
  5. *(*p(int))【3】                  数组里的元素都是指针
  6. int *(*p(int))【3】            指针指向的内容是int

从最简单的指针再来理解一下
int i=123
int *p=&i
上面的意思是 pint *类型的指针,指向 i的地址,指针类型代表从首地址开始取多少个类型字节的数据。

int **ptr2    指向指针的指针,如果int*ptr1=&a,则*ptr1=a,*ptr2=ptr1,**ptr2=a。


下面的两个函数,只有指针操作的swap函数2才能实现两个数的交换,第一个代码的swap函数只是在自己的函数空间里操作!并没有影响到主函数!
void swap(int a,int b)
{
    int tmp;
    tmp=a;
    a=b;
    b=tmp;
}
int main (void)
{
  int a=10;
  int b=20;
  printf("a=%d b=%d\n",a,b);
  
  swap(a,b);
  
  printf("a=%d b=%d\n",a,b);
}

#include <stdio.h>
void swap( int *,int * );
void swap(int *p1,int *p2)
{
int tmp;
tmp=*p1;
*p1=*p2;
*p2=tmp;
}
int main(void)
{
int a=10;
int b=20;
printf("a=%d b=%d\n",a,b);
swap(&a,&b);
printf("a=%d b=%d\n",a,b);
}
  • 30
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值