C语言学习-翁凯(第九章笔记)

这篇博客详细介绍了C语言中指针的使用,包括取地址运算符&、指针变量的概念、指针的运算以及动态内存分配。通过示例解析了指针与数组的关系、const指针的用法,并探讨了指针运算中的常见问题和动态内存分配的注意事项。
摘要由CSDN通过智能技术生成

C语言学习-翁凯(第九章笔记)

第九章

9.1.1 取地址运算:&运算符取得变量的地址

运算符&
  • scanf("%d",&i);里面的&
  • 获得变量的地址,它的操作必须是变量
    • int i;printf("%x",&i);
  • 地址的大小是否与int相同取决于编译器
    • int i;printf("%p",&i);
&不能取的地址
  • &不能对没有地址的东西取地址
    • &(a+b)?
    • &(a++)?
    • &(++a)?
试试这些&
  • 变量的地址
  • 相邻变量的地址
  • &的结果的sizeof
  • 数组的地址
  • 数组单元的地址
  • 相邻数组单元的地址

(相邻地址之间的差距是4)

9.1.2 指针:指针变量就是记录地址的变量

scanf
  • 如果能够将取得的变量的地址传递给一个函数,能否通过这个地址在那个函数内访问这个变量?
    • scanf("%d",&i);
  • scanf()的原型应该是怎样的?我们需要一个参数能保存别的变量的地址,如何表达能够保存地址的变量?
指针
  • 就是保存地址的变量

    int i;

    int* p=&i;

    int* p,q;(p是指针,q是int变量)

    int *p,q;(p是指针,q是int变量)

    (*无论靠近p还是int,都是表示p是指针,如想表达两个指针则:int * p,*q )

指针变量
  • 变量的值是内存的地址
    • 普通变量的值是实际的值
    • 指针变量的值是具有实际值的变量的地址

在这里插入图片描述

访问那个地址上的变量*
  • *是一个单目运算符,用来访问指针的值所表示的地址上的变量
  • 可以做右值也可以做左值
    • int k=*p;
    • *p=k+1;
*左值之所以叫左值
  • 是因为出现在赋值号左边的不是变量,而是值,是表达式计算的结果:
    • a[0]=2;
    • *p=3;
  • 是特殊的值,所以叫做左值
指针的运算符&*
  • 互相反作用
    • *&yptr -> *(&yptr)-> *(yptr的地址)->得到那个地址上的变量->yptr
    • &*yptr -> &( *yptr)->&(y)->得到y的地址,也就是yptr->yptr
传入地址
  • 为什么
    • int i;scanf("%d",i);
  • 编译没有报错?

9.1.3 指针的使用:指针有什么用呢?

指针应用场景一
  • 交换两个变量的值
void swap(int *pa,int *pb)
{
   
    int t=*pa;
    *pa=*pb;
    *pb=t;
}
指针应用场景二
  • 函数返回多个值,某些值就只能通过指针返回
    • 传入的参数实际上是需要保存带回的结果的变量
#include<stdio.h>

void minmax(int a[],int len,int *min,int *max);

int main(void)
{
   
	int a[]={
   2,3,5,8,64,32,24,12,6,16,26};
	
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MOOC翁凯C语言期末考试是一项对学生在C语言编程方面的掌握程度进行综合评估的考试。在这次考试中,学生将会面对一系列与C语言相关的问题和编程题目。 首先,考试将会涉及C语言的基础知识,包括变量定义、运算符使用、流程控制和函数的使用等。学生需要对这些内容有清晰的理解和掌握,能够正确地应用于实际的编程问题中。 其次,考试还将要求学生能够分析和解决一些较为复杂的编程问题。这些问题可能涉及到数组、指针、结构体等高级数据结构和算法的使用。学生需要能够理解并正确应用这些概念,以解决给定的编程问题。 此外,考试可能会涉及一些C语言程序的输出结果预测和错误调试等内容。学生需要具备对C语言的程序执行过程有清晰的认识,能够正确预测程序输出结果,并有能力发现和纠正程序中的错误。 最后,考试还可能会包括一些编程题目,要求学生能够根据题目要求独立编写C语言程序。在这些题目中,学生需要展示自己的编程能力和解决问题的能力,用C语言实现要求的功能,并保证程序的正确性和健壮性。 综上所述,MOOC翁凯C语言期末考试是一次对学生在C语言编程方面的综合能力进行考察的考试。学生需要掌握C语言的基础知识,具备解决编程问题的能力,并能够独立完成一定的编程任务。该考试将帮助学生提升在C语言编程方面的能力,并为将来在计算机编程领域的学习和工作奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾叶King

非常感谢您的支持和认同!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值