- 论坛徽章:
- 0
|
(求教)关于指针数据常量的疑问
1、指针ptr所指向的内容不变。以下操作非法,编译器将报错
ptr *ptr=k
|-----------| |----------|
| &k |—— 〉 | 100 |
|-----------| |----------|
ptr *ptr=k
|-----------| |----------|
| &k |—— 〉 | 68 |
|-----------| |----------|
2、指针ptr的值可变,因此引起的*ptr值改变是可以的。
以下操作合法。
ptr *ptr=k
|-----------| |----------|
| &k |—— 〉 | 100 |
|-----------| |----------|
ptr *ptr
|-----------| |----------|
| &m |—— 〉 | 68 |
|-----------| |----------|
举例:
- /*
- ***********************************************
- *file name : const_int_ptr.c
- *description : const int *ptr,when ptr has been
- changed what will happen to *ptr
- *note :
- *author : kernelxu
- *date : 2005\05\18
- ***********************************************
- */
- #include <stdio.h>;
- /*
- ***********************************************
- *function : main()
- ***********************************************
- */
- int main(void)
- {
- int k = 100;
- int m = 68;
- const int *ptr = NULL;
- ptr = &k
- *ptr = 68; //this is illegal, ERROR
- ptr = &m //this is OK
-
- printf("ptr = %p\n*ptr = %d\n", ptr, *ptr);
- return 0;
- }/*END OF main()*/
复制代码 |
|