Chinaunix首页 | 论坛 | 博客
  • 博客访问: 467736
  • 博文数量: 148
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 1553
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-23 23:09
文章分类

全部博文(148)

文章存档

2010年(6)

2009年(58)

2008年(84)

我的朋友

分类: C/C++

2008-02-26 12:06:24

1.常数指针和指针常数:
 在说道“指针常数”时,我们的意思是一个被声明为“char *const chrPtr”形式的指针,你不能把它修改为指向内存中另外一处的地址,但可以用它来改变它所指向的地址处的数据内容。
这与更为常见的“常数指针”是有区别的。
在说道“常数指针”时,我们的意思是一个被声明为“const char *chrPtr”形式的指针,你可以把它修改为指向内存中另外一处的地址,但不能用它来修改它所指向的地址处的数据内容。

const离谁比较近,则谁的值不能被改变。

下面是是一些例子: 

/*

a)const int a;
b)int const a;
c)const int *a;
d)int * const a;
e)int const * a const;

答案是: 
a)a是一个常整型数
b)a是一个常整型数
c)a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)
d)a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。
e)a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。

*/

/*

a) 一个整型数(An integer) 
b)一个指向整型数的指针( A pointer to an integer) 
c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)r 
d)一个有10个整型数的数组( An array of 10 integers) 

e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers) 
f) 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers) 
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer) 
h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )

答案是: 
a) int a; // An integer 
b) int *a; // A pointer to an integer 
c) int **a; // A pointer to a pointer to an integer 

 


d) int a[10]; // An array of 10 integers 
e) int *a[10]; // An array of 10 pointers to integers 
f) int (*a)[10]; // A pointer to an array of 10 integers 
g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer 
h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer 

*/


 

阅读(1193) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~