指针知识(三)

1. 指针的定义:

   1.1. 地址:

           内存单元的编号;

           从零开始的非负整数;

            范围:4g【0 -- 4g - 1】0到4g减去1

   1.2. 指针:

           指针就是地址,地址就是指针

           指针变量就是存放内存单元编号的变量,或者说指针变量就是存放地址的变量

           指针和指针变量是两个不同的概念;不过在日常中通常叙述的话我们会把指针变量简称为指针;实际上是不同的概念。

           指针的本质就是一个操作受限的非负整数。(无法进行四则运算中的加、乘、除)

    1.3. 经典案例:互换数字

          //新版的C语言标准要求main函数必须有返回值,因此定义成int类型,虽然一些编辑器还是支持void类型,不过不建议使用。

//#include <stdlib.h>   //在vs编译器下面 编译c语言 ,输出后自动关闭窗口。在return前面加上system("pause" ); 可以解决这一问题

system("pause");

方法一:

#include <stdio.h>
#include <stdlib.h>   

void  huhuan(int a, int b)
{
	int t;

	t = a;
	a = b;
	b = t;

	return;
}
int main(void)
{
	int a = 3;
	int b = 5;

	huhuan(a, b);
	printf("a = %d, b = %d\n", a, b);
	system("pause");
}
**:这个时候输出的结果是:


这是因为在主函数中输出的仍然是主函数中的局部变量,所以依旧输出的是a = 3, b = 5,

方法二:

void huhuan2(int * p, int * q )
{
	int * t;

	t = p;
	p = q;
	q = t;
}

**:这个时候输出的结果是:

这里是因为在这里p, q只是接收a, b的数值,在这里只是改变了形参的数值,实参的数值并没有改变;所有并不会改变其中的数值。

方法三:

void huhuan3(int * p, int * q )
{
	int t;      //由于p是int *, *p是int型,所以要换数值的话t必须定义成int型

	t = *p;     //p是int *, *p是int型
	*p = *q;
	*q = t;

}
**:这个时候输出的结果是:

在这一篇文章点击打开链接中已经提及了关于C语言函数声明的顺序与java的区别,其实在声明函数的时候,

形参的变量名字不是很重要,很多时候我们也可以这样子写:

void huhuan3(int * , int *  )只需要写出其数据类型就行了

    1.4. * 的三种含义:

              1. 乘法    

              2. 定义指针变量 int * a -- 定义了一个名字叫做a的变量,int *表示a只能存放一个int类型变量的地址

              3. 指针运算符: 该运算符放在已经定义好的指针变量的前面;                                

   int  * p; 
   *p  = t;   *p  表示以p的内容为地址的变量
   对于指针变量p,访问其指向的变量时,使用"*"运算符;


    1.5. 通过指针可以是被掉函数修改主函数的数值:

            1. 实参必须为该普通变量的地址;

            2. 形参必须为指针变量;

            3. 被掉函数中通过 * 形参名  = 。。。。 的方式可以修改主调函数相关变量的值

void xiugai (int * a, int * b)
{
	*a = 2;
	*b = 3;
	
}
int main(void)
{
	int a = 3;
	int b = 5;

        xiugai(&a, &b);
	printf("a = %d, b = %d\n", a, b);
	system("pause");

	return 0;
}
此时的结果将会是: a = 2, b = 3;




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值