指针学习笔记2

  • 指针常见错误
               ## 观察指针常见错误1 ##
 /****************************************************
 *时间:2016.8.19 11:14
 *功能:观察指针常见错误1:解引用未初始化的指针
 *目的:通过程序更深入了解指针
 ****************************************************/

 #include <stdio.h>

 int main(void)
 {
    int * p;    //声明一个指向int类型的指针变量p(PS:未初始化)
    int i = 5;  

    *p = i;     //把i的值存储在p所指向的位置
    printf("%d\n",*p);

    return 0;   
 }
 //解引用未初始化的指针p,因为p未初始化,所以其值是一个随
 //机值,所以不知道i的值会存放在哪个位置,可能不会出错,也
 //可能会擦除或者改写数据或代码,导致程序崩溃

               ## 观察指针常见错误2 ##

 /****************************************************
 *时间:2016.8.19 11:40
 *功能:观察指针常见错误2
 *目的:通过程序更深入了解指针
 ****************************************************/
 //指针常见错误2
 #include <stdio.h>

 int main(void)
 {
    int i = 5;
    int *p;
    int *q;

    p = &i;
    *q = p;              //error,类型不一致
    *q = *p;             //error,解引用未初始化的指针
    p = q;               //okay,q未初始化,把q的随机值赋值给q,但无意义
    q = p;               //okay

    printf("%d\n",*q);   //声明时为q分配了内存,所以可以对q进行读写操作
                         //未分配存储数据的内存,所以不可以对*p进行读写操作        
 }

小结

1、指针的重要性:

1) 能够处理复杂的数据结构
2) 使函数返回一个的值
3) 能够直接访问硬件
4) 能够方便的处理数组和字符串
5) 是理解面向对象中引用的基础

总的来说:指针是C语言的灵魂

2、地址

1) 内存单元的编号
2) 从零开始的非负整数
3) 范围:4G([0-4G-1],一般是32根地址线,即2^32 = 2^30 * 2^2 =
1G * 4 = 4G)

3、指针

1) 指针就是地址,地址就是指针
2) 指针变量就是存放内存单元编号的变量,或者说是存放地址
的变量
3) 指针的本质就是一个‘操作受限’的非负整数
(只可以进行减法运算,其他可以进行,但是毫无意义)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值