分类: 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
*/