龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

学点 C 语言(37): 函数 - 常量(const)参数(2)

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
3. 其实不使用 *const, 指针也不会被修改: 还是上面的例子, 去掉 const... 函数也不会成功. 这是为什么呢? 因为指针的本身作为参数时也只是个副本(不过副本

  3. 其实不使用 *const, 指针也不会被修改:

  还是上面的例子, 去掉 const... 函数也不会成功.

  这是为什么呢? 因为指针的本身作为参数时也只是个副本(不过副本指向的值可是真的).

#include 

void swap(int *p1, int *p2) {

  int *t = p1;

  p2 = p1;

  p2 = t; 

}

int main(void)

{

  int x = 111;

  int y = 222;

  

  printf("%d,%dn", x, y);

  swap(&x, &y);  

  printf("%d,%dn", x, y);

  

  getchar();

  return 0;

}

  4. 但第二种方法不会现在修改指针指向的值:

  这也最终可以完成这个 swap 函数; 就这个函数本身来讲, 完全可以不用 const.

#include 

void swap(int *const p1, int *const p2) {

  int t = *p1;

  *p1 = *p2;

  *p2 = t; 

}

int main(void)

{

  int x = 111;

  int y = 222;

  

  printf("%d,%dn", x, y);

  swap(&x, &y);  

  printf("%d,%dn", x, y);

  

  getchar();

  return 0;

}

  5. 甚至可以两种手段一起上:

#include 

int fun(int const *const p1, int const *const p2) {

  return *p1 + *p2;

}

int main(void)

{

  int x = 111;

  int y = 222;

 

  printf("%dn", fun(&x, &y));

  

  getchar();

  return 0;

}

精彩图集

赞助商链接