学点 C 语言(20): 数据类型 - 指针(2)
5. 为什么没有初始化的指针是危险的:
#include
int main(void)
{
int *p;
// 上面的指针 p 没有初始化话, 但它也有个垃圾地址
printf("%pn", p);
// 此时如果给它赋值, 谁知道会覆盖了什么?
//*p = 100; /* 不要执行这个 */
getchar();
return 0;
}
6. 指向常量的指针: 不能通过指针修改它指向的值, 但该值可以通过其变量修改
#include
int main(void)
{
int n1 = 111;
int n2 = 222;
const int *p = &n1; /* 注意 const 的使用 */
printf("%d, %p, %dn", n1, p, *p);
n1 = 333;
//*p = 333; /* 不可以这样, 因为现在的指针是常量 */
printf("%d, %p, %dn", n1, p, *p);
p = &n2; /* 可以改变指针的指向 */
printf("%d, %p, %dn", n2, p, *p);
getchar();
return 0;
}
7. 常量指针: 锁定指针的指向
#include
int main(void)
{
int n1 = 111;
int n2 = 222;
int *const p = &n1; /* 注意 const 的使用 */
printf("%d, %p, %dn", n1, p, *p);
n1 = 333;
//*p = 333; /* 不可以这样, 因为现在的指针是常量 */
printf("%d, %p, %dn", n1, p, *p);