AutoLeaders控制组——C语言指针学习笔记倪文健

AutoLeaders控制组——C语言指针学习笔记倪文健

9.1.1取地址运算

运算符&:获得变量地址,操作数必须为变量。(地址通常用十六进制表达)

十六进制可用%x转换。

要输出地址用%p。例如:int i;printf(“%p”,&i);

地址的大小是否与int相同取决于编译器。在32位架构下,int于地址相等。

&不能取没有地址东西的地址。例如:&(a+b)为错误示范。

相邻int变量的地址相差4,因为int以4个字节为一个整体。

数组a[10]==&a,数组中的相邻元素地址相差4,即1个int。

在这里插入图片描述

9.1.2指针:记录地址的变量

指针就是保存地址的变量。

在这里插入图片描述

int* p=int *p

指针可作为参数:

void f(int *p);在被调用的时候得到了变量地址

int i=0;f(&i);在函数里可以通过这个指针访问外面的这个i

运用:
在这里插入图片描述

*是单目运算符,用来访问指针表示的地址上的变量,可做左值也可做右值:

int k=*p;

*p=k+1;

*和&互为相反作用:

*(&q)=q;

9.1.3指针的使用

函数返回多个值,某些值就只能通过指针返回

传入的参数实际上是需保存带回的结果的变量

交换:

void swap(int *pa,int *pb)

{

int t=*pa

*pa= *pb

*pb=t

}

找最大最小值:

在这里插入图片描述

让函数返回特殊的不属于有效范围内的数表示出错

在这里插入图片描述

指针常见错误:定义了指针变量,没有指向任何变量,就使用指针

9.1.4指针和数组

数组实际上就是指针,在函数里修改数组的值,主函数里数组的值也会改变。

int *a=int a[];

数组不用&取地址,但数组单元要用&取地址。

[]运算符可以对数组做,也可以对指针做。

数组变量是const的指针,不能赋值。

例如:可以int *p=a不能int p[]=a;

9.1.5指针与const

当指针是const时:

int* const q=&i;//q是const

*q=26;//ok但不能q++

当所指是const时:

const int *p=&i

*p=26//错误, *p是const

i=26//ok p=&j//ok

const在*前,所指不能被修改

const在*后,指针不能被修改

const int a[]={1,2,3};数组变量已经是const的指针,表明数组的每个单元都是const int;必须通过初始化赋值。(作用:保护数组不被破坏)

9.2.1指针运算

*p+1不是在地址值上+1,而是+sizeof(指针所指类型)

在这里插入图片描述

让指针+1指向下一个变量:

int a[10];

int *p=a;

*(p+1)指向a[1]

指针指向都是一片连续分配的空间。

当指针相减时,输出为地址差/sizeof(指针所指类型

指针可加减,不能乘除;可比较(<,>,!=)比较它们的地址大小

0地址表示特殊的事:

返回指针无效

指针没有初始化

NULL表示0地址

不同类型的指针不能互相赋值

指针类型转换:

int *p=&i;

void*q=(void *)p

void*表示不知道指向什么东西的指针

9.2.2动态内存分布

要用malloc,要有头文件#include <stdlib.h>

int *a=(int *)malloc(n *sizeof(int));

表示a分配了n个int类型的内存。

即*a=a[n];

malloc后一定要free()

free必须是原始地址,不能a++后还

申请的空间是有限的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《数值分析与算法 喻文健 第二版 pdf》是一本关于数值分析和算法的教材。数值分析是一门研究利用数学方法求解实际问题的学科,它主要研究如何利用数值计算方法进行近似计算,并对计算结果的准确性进行分析和评估。算法则是指求解特定问题的一系列操作步骤。 《数值分析与算法 喻文健 第二版 pdf》的第二版相比于第一版做了一些修订和扩充。这本教材首先介绍了数值分析的基本概念和方法,包括数值计算的误差分析、插值与逼近、数值积分与数值微分等内容。然后,它详细介绍了一些经典的数值算法,如线性方程组的直接与迭代法、非线性方程的求解、积分方程的数值求解等。 这本教材的主要特点是理论与实践相结合。它不仅介绍了数值分析的基本理论,还提供了大量的实例和算法实现,方便读者理解和应用。此外,教材中还讲解了一些常用的数值计算工具和软件,如MATLAB和Python等,以帮助读者进一步提高实际问题的解决能力。 总的来说,这本教材对于学习和了解数值分析和算法的人来说是一本很好的学习资料。它通过丰富的例子和实例,详细讲解了数值分析的基本理论和方法,同时也提供了一些常用的数值计算工具和软件的应用。读者通过阅读这本教材,可以系统地学习和掌握数值分析和算法的基本知识,提高实际问题的求解能力。 ### 回答2: 《数值分析与算法》是喻文健编著的一本数学相关的教材,第二版是其更新的版本。以下是关于《数值分析与算法 喻文健 第二版 pdf》的回答: 《数值分析与算法 喻文健 第二版 pdf》是指该教材的电子版,通常以PDF格式提供。PDF是一种通用的电子文档格式,可以在不同平台和设备上方便地查看和分享。 这本书介绍了数值分析及其相关的算法。数值分析是研究用数值方法解决数学问题的学科,它主要涉及数值计算、近似计算、误差分析等内容。算法是解决问题的一系列步骤或计算过程,可以用于实现数值分析。 数值分析和算法在现代科学、工程和计算技术的各个领域中发挥着重要作用。该教材通过理论介绍和实例分析,帮助读者理解和掌握数值分析和算法的基本概念、原理和方法。它包含了数值线性代数、插值与逼近、数值微积分、常微分方程数值解等内容。 对于对数学和计算机科学感兴趣的读者,阅读《数值分析与算法 喻文健 第二版 pdf》可以帮助他们深入了解数值分析和算法的基础知识,并学会应用这些知识解决实际问题。同时,电子版的便携性和易于搜索的特点也使得学习更加便捷和高效。 总之,《数值分析与算法 喻文健 第二版 pdf》是一本重要的数学教材,对于深入理解数值分析与算法的读者来说具有很高的参考价值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值