《C语言内核深度解析》学习笔记之C语言复杂表达式与指针高级应用(第四章)

1.指针数组与数组指针

指针数组的实质是一个数组,这个数组里面的元素全部都是指针变量。

数组指针的实质是一个指针,这个指针指向的是一个数组,因而叫做数组指针。

如何判断一个符号的实际含义:(第一步)找核心:其他的符号均为核心服务

                                                   (第二步)找结合:根据符号优先级,距离与核心结合

                                                   (第三步)再结合:继续向外结合直到整个符号结束

2.函数指针

函数指针的实质是指针。(函数指针、数组指针、普通指针的区别在于指针指向什么何物)

函数名的实质就是函数这段代码的首地址。

类型与变量的区别:类型本身并不占内存,它只是一个模具,而变量是这个类型的一个具体实例。

补充说明:

在LINUX下,scanf是和系统的标准输入打交道,printf和标准输出打交道。在输入时以\n结束,但是scanf并不会接收\n,所以下次scanf就会拿出来\n导致无法拿出真实的值,采用方法,while(c=="\n");

3.typedef与#define宏的区别

typedef是C语言的关键字,用于定义新的类型。

#define是单纯的替换,替换发生在预编译过程。

#define dpChar char*
typedef char* tpChar;
dpChar p1,p2;  //p1=是char*类型 p2是char
tpChar p3,p4;  //p3,p4均是char*类型

顺序上,typedef与#define是相反的,且typedef语句需要加;号,同时typedef可以一次性定义很多个指针变量。

typedef的作用:1)简化类型,让程序更易理解和书写。

                          2)创造平台无关类型,便于移植。

4.二重指针

二重指针本质上也是指针变量,它指向的变量类型必须是一重指针

5.二维数组

一维数组在内存中连续分布,由多个内存单元组成,而二维数组在内存中也是连续分布,由多个内存单元组成。

二维数组更好理解、利于组织,可以简化编程。

二维数组访问小结:

1.a[i][j]等同于*(*(p+i)+j)

2.p不解引用,对p加减是在第一维里偏移地址

3.p解一次引用,对*p加减是在第二维里偏移地址

4.p解二次引用,才能访问到值,如*(*p)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中的结构体是一种自定义的数据类型,可以用于存储不同类型的数据项。结构体中的数据项称为成员,可以是整型、字符型、浮点型等任意类型。我们可以通过定义结构体变量来使用结构体,并访问其成员。 指针则是存储内存地址的变量,可以指向任意类型的数据。通过指针,我们可以间接访问和修改存储在内存中的数据。结合结构体和指针的特性,可以实现对结构体的灵活操作。 结构体与指针应用非常广泛。首先,我们可以通过指向结构体的指针来传递结构体作为函数参数,从而避免在函数调用过程中复制整个结构体的开销。这样的用法在处理大型结构体或者结构体数组时尤为重要。 其次,结构体的成员也可以是指针类型,这样可以实现动态内存分配和数据管理。例如,可以使用指向结构体的指针来创建动态大小的结构体数组,并通过指针来访问和操作数组的元素。 此外,结构体指针也常用于实现数据结构,如链表、树等。通过指针的相互连接,可以实现复杂的数据结构,并对其进行插入、删除、遍历等操作。 总结起来,结构体与指针C语言中的应用非常灵活和广泛。通过结构体指针,我们可以实现对结构体的动态分配和管理,节省内存开销。同时,结构体指针也为实现复杂的数据结构和算法提供了便利。因此,学习和掌握结构体与指针应用对于C语言的程序开发非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值