指针学习笔记2

来源:互联网 发布:linux使用ftp传输文件 编辑:程序博客网 时间:2024/05/21 08:07
  • 指针常见错误
               ## 观察指针常见错误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) 指针的本质就是一个‘操作受限’的非负整数
(只可以进行减法运算,其他可以进行,但是毫无意义)

1 0
原创粉丝点击