c语言指针笔记

1、“指针”和“指针变量”概念

     指针是一个地址,而指针变量是存放地址的变量。

2、 数组名不代表整个数组的,只代表数组首元素的地址。

3、 两个指针相减,如P1-P2,只有两个指针P1和P2都指向同一个数组中的元素时才有意义。

4、 执行P+1时并不是将P的值(地址)简单的加1,而是加上一个数组元素所占用的字节数。

5、 如果指针变量P1和P2都指向同一数组,如执行P2-P1,结果是P2-P1的值(两个地址之差)除以数组元素

        的长度,这个结果是有意义的,表示P2所指的元素与P1所指的元素之间差两个元素,两个地址不能相加,

        如P1+P2没有任何 的实际意义。

6、 一个实参数组,要想在函数中改变次数组中的元素的值,实参与形参的4中对应关系:

       第一:形参和实参都用数组名。

       第二:实参用数组名,形参用指针变量。

       第三:实参形参都用指针变量。

       第四:实参为指针变量,形参为数组名(编译系统把x作为指针变量来处理)

7、 如何用指针变量作实参,必须先使指针变量有确定的值,指向一个已定义的对象。

8、通过两个函数对比结果:

  1. #include<stdio.h>
    void main()
    {
    	void swap(int *x, int *y);
    	int a=1,b=2,*pin1,*pin2;
    	pin1=&a;
    	pin2=&b;
    	if(a<b)
    	{
    		swap(pin1,pin2);
    	}
    	printf("%d\n%d\n",a,b);
    }
    
    void swap(int *x,int *y)
    {
    	int temp;
    	temp=*x;
    	*x=*y;
    	*y=temp;
    }

          上面函数的运行结果为2 1,此时形参为指针变量,通过调用指针变量的方式改变a,b的值,函数运行完之后a,b值发生变化并保持下来。但是如果我们通过下面函数的形式来改变a,b的值,结果是不对的。

    #include<stdio.h>
    void main()
    {
    	void swap(int x, int y);
    	int a=1,b=2;
    	if(a<b)
    	{
    		swap(a,b);
    	}
    	printf("%d\n%d\n",a,b);
    }
    
    void swap(int x,int y)
    {
    	int temp;
    	temp=x;
    	x=y;
    	y=temp;
    }

    此时运行结果为1,2,可以看到a,b的值并没有发生调换。所以此种使用形参的方式是错误的。也就是说为了使在函数中改变了的变量值能被主调函数Main所用,不能采取上述吧要改变的变量作为形参的办法,而应该用指针变量作为函数参数,在函数过程中使指针变量所指向的变量值发生变化。当函数结束后,这些变量值的变化依然保留下来。


     

     

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值