C语言指针举例(From(新浪微博:@M了个J))学习笔记

举例一

.交换两个实参的值

(对比一下两段程序)
程序段一:
void swep(char m, char n)
{
   char temp;
   printf("交换前:m=%d, n =%d\n", m , n);
   temp = m;
   m = n;
   n = temp;
   printf("交换后:m=%d, n =%d\n", m , n);
}

int main()
{
   char a =10, b =5;
   printf("交换前:a=%d, b =%d\n", a , b);
   swep(a, b);
   printf("交换后:a=%d, b =%d\n", a , b);
   return 0;
}

++++++++++++++++++++++++++++++++++++++
输出结果:
交换前:a= 10,b=5
交换前:m=10,n=5
交换后:m= 5,n=10

交换后:a= 10,b=5


    从上面可以看到两个形参的值在交换前后发生了变化,但实参的值并未发生改变,这是因为swep(char ,char)只是进行一次值传递,并不能修改对应存储地址中的数值!下面的函数利用了指针对实参进行了值交换。
程序二:
void swep(char* m, char* n)
{
   printf("交换前:*m=%d, *n =%d\n", *m , *n);
   char temp;
   temp = *m;
   *m = *n;
   *n = temp;
   printf("交换后:*m=%d, *n =%d\n", *m , *n);
}

int main()
{
   char a =10, b =5;
   printf("交换前:a=%d, b =%d\n", a , b);
   swep(&a, &b);
   printf("交换后:a=%d, b =%d\n", a , b);
   return 0;
}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
输出结果:
交换前:a= 10,b=5
交换前:m=10,n=5
交换后:m= 5,n=10

交换后:a= 5,b=10


举例二:(一个函数返回多个值)

void sumAndminus(int m,int n, int *_sum, int* _minus)

{

   * _sum = m+ n;

   * _minus = m - n;

}


int main()

{

   int a= 10, b=5;

   int sum, minus;

   sumAndminus(a, b , &sum, &minus)

   printf("sum= %d , minus = %d", sum , minus)

   return 0;

}

    声明一个指针变量int *pa;的过程是在内存中开辟了一块存储位置的过程,int *pa是声明的一个地址,接收的值为地址,如&a(int a = 10)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值