C总结-第四章 指针数组(4/6)

原创 2015年02月28日 15:40:39

第四章 指针数组

1. 非零为真,零为假

★实例:

int a=2, b=3, c=5;

int x1, x2, x3;

x1 = (a>0); x2 = (b<0); x3 = (c==5);  //x1=1, x2=0, x3=1

 

2. a 和 &a的区别

对指针加1的操作,得到的是下一个元素的地址,移动单位为sizeof(数据类型)。

a:数组首元素首地址

&a[0]:数组首元素地址

★实例:

int a[5];

&a+1  //&a+sizeof(int),下一个数组首地址

a+1  //数组a中下一个元素

 

3. 指针和数组

指针:用于动态数据结构

数组:存储固定数目且类型相同的元素

 

4. 指针数组和数组指针

指针数组(数组):int *p[10];  //数组,元素为指针([]优先级高于*)

数组指针(指针):int (*p)[10];  //指针,二维数组,指向整个数组(指向包含十个元素的数组)

 

5. 检查机器存储方式(大端或小端)

小端:低位在低地址,高位在高地址 (数据左高位右地址)

大端:低位在高地址,高位在低地址

★实例:

int CheckStore()  //1小端,否则为大端

{

union check

{

int i;

char ch;

}c;

c.i = 1;

return (c.ch == 1); 

}

 

6. 逗号表达式

表达式1, 表达式2, ......表达式n

1)逗号表达式的运算过程为:从左到右逐个计算表达式的值

2)逗号表达式作为一个整体,它的值为最后一个表达式(即表达式n)的值

3)逗号运算符在所有运算符中最低

 

7. 多组指针,数组

★实例:

int a[5][5];

int (*p)[4];

p = a;

问:&p[4][2] - &a[4][2]值为多少?(答案:-4)

&p[4][2]=4*4*sizeof(int) + 2*sizeof(int)

&a[4][2]=4*5*sizeof(int) + 2*sizeof(int)

 

8. 数组参数与指针参数

形参:声明或定义时的参数

实参:调用函数时,传递过来的实际值

1)C语言中,当一位数组作为函数函数的时候,编译器总是把它解析为一个指向其首元素首地址的指针。(无法向函数传递一个数组)

2)函数本身无类型,只有返回值才有类型

3)main函数内的变量是局部变量,不是全局变量

4)无法将指针本身传递给一个函数

5)想要用指针分配内存:①一级指针用return  ②二级指针

6)char a[3][4] 等效于 char (*p)[4]

     char *a[5] 等效于 char **p

 

9. 函数指针(指针):可以将统一功能的多个模块统一标识

函数名即为入口地址,函数名 等价 &函数名

★实例:

(* (void (*) () ) 0) () 

① void (*) ()  是一个无参数无返回值的函数指针,*表示指针

/*

void(*)()是一个返回值为void,参数为空的函数指针类型

void(*abc)();就是定义了一个“返回值为void,参数为空”的函数指针abc,可以这样调用:abc();

*/

②(void (*) ()) 0  强制类型转换,0是一个地址,将0强转为函数指针

③(*(void (*) ()) 0)  取0地址开始的一段内存里的内容

④(* (void (*) () ) 0) ()  函数调用

 

10. 函数指针数组(数组):用于编写具有相似功能的函数

 

11. 函数指针数组指针:一个指向数组的指针,数组里元素都是指向函数的指针而已

版权声明:本文为博主原创文章,未经博主允许不得转载。

计算机网络_学习笔记 第四章 网络层

(计算机网络_学习笔记系列,本文为hcbbt个人总结,方便以后复习与查阅。未完待续。)...
  • hcbbt
  • hcbbt
  • 2013年11月10日 22:17
  • 2133

《Java编程思想》(第4版)学习总结

一次偶然的机会让我接触到了《Java编程思想》这本书,之前他们说是Thinking in Java 我当时并不知道,后来查资料的时候才知道是这本经典的书籍,于是就忍不住开始阅读了。开始感觉这本书讲解的...
  • yj_android_develop
  • yj_android_develop
  • 2015年09月09日 13:32
  • 862

数据挖掘:概念与技术(第三版)之第四章的学习记录

本章主要介绍数据仓库与联机分析处理。 本章为KDD中的数据挖掘知识引入进行了铺垫。 学习完本章要能够把数据仓库,数据立方体,OLAP,星形、雪花型、和事实星座这些概念进行区分,并有序的组织在一起。...
  • u014593570
  • u014593570
  • 2017年06月29日 13:50
  • 689

Spring in Action(第四章 面向切面编程)学习笔记

1.在软件开发中,分布于应用中多处的功能被称为横切关注点。这些横切关注点从概念上是与应用的 业务逻辑相分离的,将这些横切关注点与业务逻辑相分离正式面向切面编程(AOP)所解决的。依赖注入 有助于应...
  • dfb198998
  • dfb198998
  • 2016年08月27日 10:55
  • 414

《集体智慧编程》第4章 搜索与排名 个人笔记

第4章 搜索与排名1、基于内容的排名 2、利用外部回指链接 3、点击行为中学习...
  • Amber07
  • Amber07
  • 2017年05月02日 17:36
  • 383

C语言学习笔记(18) 指针数组和数组指针分析

摘要:总结了指针数组和数组指针的定义,以及main函数的入口参数的意义,每一个部分给出一个例子加深理解。 一、三个问题    1.一维数组名代表了数组首元素的地址,二维数组名呢?  ...
  • Deep_l_zh
  • Deep_l_zh
  • 2015年11月30日 22:10
  • 1677

《深入理解计算机系统》1-4章总结

经过1个月断断续续的学习,已学习完《深入理解计算机系统》第四章,不得不说这本书确实无愧经典之名,能带给自己更深层次对编程的理解,现总结下现阶段的学习与体会: 第一章主要为后面个章节做了铺垫,其...
  • steinliber
  • steinliber
  • 2015年07月25日 09:51
  • 752

深入.net第四章

三层体系结构的概念 用户界面表示层(USL) 业务逻辑层(BLL) 数据访问层(DAL) BLL将USL与DAL隔开了,并且加入了业务规则 各层的作用 1:数据数据访问层:主要是对原始数据(数...
  • weixin_36024609
  • weixin_36024609
  • 2017年03月23日 19:02
  • 256

C语言指针数组(每个元素都是指针)

如果一个数组中的所有元素保存的都是指针,那么我们就称它为指针数组。指针数组的定义形式一般为: dataType *arrayName[length]; [ ]的优先级高于*,该定义形式应该理解...
  • u012507643
  • u012507643
  • 2016年10月25日 09:16
  • 577

计算机网络原理第四章

4 数据链路层的功能 服务:将源机网络层来的数据可靠地传输到相邻节点的目标网络层。 如何将数据组合成数据块(帧Frame) 如何控制帧在物理信道上传输(处理传输差错、调节发送速率以使之与接收方相...
  • niu870781892
  • niu870781892
  • 2012年02月16日 13:30
  • 911
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C总结-第四章 指针数组(4/6)
举报原因:
原因补充:

(最多只允许输入30个字)