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

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

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
非指针参数(也就是传值参数)不会被修改原始值, const 对它是没有意义的. const 只用于指针. 1. 第一种用法: const 类型 *变量: 这种用法将限制修改指针指向的值. #include int fun(const int *p) {

  非指针参数(也就是传值参数)不会被修改原始值, const 对它是没有意义的.

  const 只用于指针.

  1. 第一种用法: const 类型 *变量:

  这种用法将限制修改指针指向的值.

#include 

int fun(const int *p) {

  *p += 1;  /* 只有去掉 const 这句才可以执行 */

  return *p;

}

int main(void)

{

  int num = 3;

  printf("%dn", fun(&num));

  

  getchar();

  return 0;

}

  2. 不过也有办法绕过这个限制:

#include 

int fun(const int *p) {

  int *p2 = p; /* 来个重名指针会绕过 const 的限制 */

  *p2 += 1;

  return *p;

}

int main(void)

{

  int num = 3;

  printf("%dn", fun(&num)); /* 4 */

  

  getchar();

  return 0;

}

  2. 第二种用法: 类型 *const 变量:

  这种用法将限制指针的指向; 下面的例子企图修改指针, 不会成功.

#include 

void swap(int *const p1, int *const 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;

}

精彩图集

赞助商链接