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. 函数指针数组指针:一个指向数组的指针,数组里元素都是指向函数的指针而已

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

相关文章推荐

第五章 表达式

习题5.2 计算下列表达式的值,并指出哪些结果值依赖于机器? -30 * 3 + 21 / 5 -30 + 3 * 21 / 5 30 / 3 * 21 % 5 -30 / 3 * ...

关于vector的vector(int)的使用问题

最近写了一题需要使用矩阵来存储树结构,元素只有10W个,但是需要开10W*10W的矩阵来表示关系,明显是开不下的,这里vector>是一个不错的选择,但是在使用的时候回发生一些问题:vector su...

第四章 数组和指针 (part4) 多维数组

严格地说,C++ 中没有多维数组,通常所指的多维数组其实就是数组的数组: // array of size 3, each element is an arr...
  • gws1229
  • gws1229
  • 2012年09月24日 09:39
  • 310

第四章 数组和指针(part5) 总结 & 常用术语

本章介绍了数组和指针。数组和指针所提供的功能类似于标准库的 vector 类与string 类和相关的迭代器所提供。我们可以把vector 类型理解为更灵活、更容易管理的数组,同样,string 是 ...
  • gws1229
  • gws1229
  • 2012年09月24日 10:33
  • 319

《C语言深度解剖》第四章 数组与指针 总结

1.指针的内存布局一个基本的数据类型(包括结构体等自定义类型)加上“*”号就构成了一个指针类型的模子。这个模子的大小是一定的,与“*”号前面的数据类型无关。“*”号前面的数据类型只是说明指针所指向的内...

TEC1701.WebADI开发技术总结 - 第四章 Web ADI相关后台表结构(4/6)

第四章  Web ADI相关后台表结构 1.      查询自定义的集成器信息 --integrator table --集成器表 --alter session set nls_l...

C程序设计笔记6-8章 数组/函数/指针

[ TOP ]数组定义 int a[3]={1,2,3}二维数组内存中二维数组的排放是线性的 int a[2][3]={{1,3,4},{2,4,6}}字符数组字符串即字符数组。 对于定义了长度但...

C\C++ 数组与指针彻底总结

  • 2012年05月03日 08:17
  • 22KB
  • 下载

<深入理解C指针>学习笔记和总结 第四章 指针和数组

数组是一个什么玩意: 数组和指针我的理解,有相同之处也有不同之处。因有相同之处,因此一些资料上说,数组和指针本质是相同的。因有不同之处,因此也有一些资料上说,数组和指针是不一样的。 相同之处: ...

c与指针-第四章-编程练习7

  • 2009年03月04日 15:38
  • 760B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C总结-第四章 指针数组(4/6)
举报原因:
原因补充:

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