C语言灵魂——————指针 之一

 

C语言的灵魂——————指针

【1】、
地址运算符 & 后跟一个变量名时,&给出该变量的地址
间接运算符 *当后跟一个指针名或地址时,*给出存储在被指向地址中的数值  

int *p;
int i=3;
int j;
p=&i;
j=*p;

以上两条语句相当于 j=i
1、p保存了i的地址,因此p指向i
2、p不是i,i也不是p,更准确的说:修改P的值不影响i的值,修改i的值不影响P
的值
【2】指针变量的声明
声明变量需要说明指针所指向变量的类型,为什么?
因为不同的变量类型占用的存储空间大小不同,而有些指针操作需要知道变量类型所占用的存储空间,同时程序也需要了解地址中存储的时何种数据。
【3】指针的定义
地址:
从零开始的非负整数
地址就是内存单元的编号

指针就是地址
指针变量是存放地址的变量
指针和指针变量是两个不同的概念
指针的本质就是一个操作受限的非负整数(指针可以进行相减运算,但不可以进行+  *  /的运算)
【4】指针的重要性
 表示一些复杂的数据结构
 快速的传递数据,减少了内存的耗用【重点】
 使函数返回一个以上的值(return只能返回一个值)【重点】
 能直接访问硬件
 能够方便的处理字符串
 是理解面向对象语言中引用的基础


【5】指针的分类
 1、基本类型指针
#include<stdio.h>
int main(void)
{
 int *p;//p是变量的名字,int *表示p变量存放的是int类型变量的地址
 int i = 3;
 int j;
 p=&i; //地址运算符,p只能够存放int类型变量的地址
 j=*p;//*为间接运算符

 //上面的两条语句相当于“j=i”
 printf("%d\n",j);
 return 0;
}

经典指针程序:

/*******************************8
2011年9月13日20:42:47
目的:互换两个数
************************************/
#include<stdio.h>
//不能完成互换功能
void huhuan_1(int a,int b)
{
 int t;

 t=a;
 a=b;
 b=t;
 printf("a=%d,b=%d\n",a,b);
 return ;

}

//可以完成互换功能
void huhuan_2(int *p,int *q)
{
 int t;
 
 t=*p;
 *p=*q;
 *q=t;

 return ;

}
int main(void)
{
 int a = 3;
 int b = 5;
 
 //huhuan_1(a,b); 
 //huhuan_2(a,b); //错误的
 huhuan_2(&a,&b);
 printf("a=%d,b=%d\n",a,b);
 return 0;
}

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值