二维数组和指针(20161215)

缺少内容:实例程序,需要进一步理解数组和指针
一、数组
1、二维数组
行下标可以省,列下标不可以省
2、指针
(1)指针类型是一类特殊的类型
DataType name;
DataType
name;
DataType * name;
DataType:数据类型
*:指针号
name:变量名
指针和普通变量的区别:
指针 :存地址
普通变量:存值
指针只能保存与其相同类型的地址
int *p:只能保存int型地址
char *pc:只能保存char型地址
double *pd:只能保存double型地址
(2)初始化

int *p=NULL;//ok

int a=3;
int *pa=&a;//ok

int *pb;
pb=&a;    //ok 

int *pc
*pc=&a  //error

(3)地址的访问
*:间接访问运算符
*p:取指针对应内存里面的值
(4)可以把指针变量赋值给同类型指针
(5)不同类型指针的大小
64位机: 8位
32位机: 4位
(6)指针的类型和指针所指向指针类型
int pa;
int
pa;
double pa;
指针的类型:
去掉变量名之后的部分
指针所指向的类型:
去掉指针变量名和其前面的

(7)指针与数组
数组名第一个地址,
数组元素的访问:

    int *pa=arr;```
    形式:
``` arr[0];arr[3];
    *(arr);*(arr+3)
    *(pa);*(pa+3);
    pa[0];pa[3];```
(8)野指针
    未初始化,或者其指向的内存未被释放,而指针没有被置空;
    危害:造成系统资源的浪费,容易产生位置的致命错误。
(9)指针地址的运算
    指针的自增和自减运算
    自增:指针向高地址方向移动
    自减:指针向低地址方向移动
        移动的字节数是指针指向类型的字节大小,
        指针相加
    指针加减一个常量,表示地址往高字节或者低字节移动
    常量值*sizeof(对应数据类型)个字节
(10)概念区分

int buf[3];//数组大小为3,存放3个int型变量
int pb//指针,其类型为int
int arr[3]//指针数组
int (
pa)[3]//数组指针,又称行指针
int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}};
1 2 3
4 5 6
7 8 9```
2.二级指针

int a=10;
int *q=&a;
int **p=&q;
*p=q;
**p=*q=a;```



//定义一个指针,或者对地址进行操作时,一定要确认指针的指向
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,474评论 3 44
  • 作业整理; 指针的基本的结构与基础知识整理; 作业讲解:(1) 将2~100之间的素数 保存到数组中,并遍历输出,...
    比莉吉恩阅读 389评论 0 0
  • 1.语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧...
    金巴多阅读 1,818评论 0 9
  • 为了近日的一次公开活动,忙前忙后一周,四处协调、落实。每天按照启程记录的任务赶进度,完成一项,勾画一项。每天跑...
    谭辛节阅读 229评论 0 0
  • http://www.liaoxuefeng.com/wiki/001434446689867b27157e896...
    子木同阅读 913评论 0 0