2020春-C高级--第二周--视频内容大纲

一、视频1.1.4指针和数组

  • 1、传入函数的数组实际传入的是指针!另外学习这个知识点外,一定要学会使用printf来调试程序,老师也是在程序里不断加入printf来验证观点。
  • 2、传入函数的数组实质上传入了数组的首地址,所以需要注意:
    • 数组参数有四种形式:
    • 数组长度需要单独传入调用函数内
  • 3、数组变量是特殊的指针
    • 数组变量a本身表示地址,无需用取地址符号&;
    • 数组单元表达的是变量,需要用取地址符&,比如a[1]的地址是&a[1];
    • []是一个运算符,操作数也可以是指针,*p等价于p[0],将指针变量p认为是数组长度为1的一个数组,但注意不能p[1],为什么?;
    • * 运算符的操作数也可以是数组变量a,对数组变量a进行*运算得到数组的a[0]元素的值;
    • 数组变量是const类型,常量指针,不可改变,但普通指针p可改变,可指向别的变量。

二、视频1.2.1指针运算

  • 1、指针加1意思是指向下一个单元,而不是指针变量里的值真的加上1;
    • 注意:此指针必须指向一片连续的空间,否则加1就没有意义了,就会指向一个未知的地方。
  • 2、指针还可以做减1、--,++,-=,+=运算;
  • 3、两个指针可相减,得到两个指针之间有几个单元;
  • 4、*p++,++的优先级比*高,但是在p后面,所以此句意思是先取出p所指的数据,然后指向下一个数据;
  • 5、指针可比较大小,但指针不能进行乘除运算;
  • 6、0地址可用NULL来表示;
  • 7、不同类型指针不可以赋值,初学者不建议强制类型转换,也不建议void*

PTA题目:
1、**不能用于一维数组,可用于二维数组。
2、指针时用来存放地址,地址就是个常数,所以编译是能通过的!但是,这样执行会出错(段错误)的!因为指针本来是存放地址的,而存放了一个常数(即一个不合法的地址),这样就会使指针指向不确定的内存单元(非法访问),从而出现错误!

3、填空题4-3一步步认真分析。
4、程序填空题,实参和形参的关系!
5、函数题,先实现数组一次移动,再循环移动~

posted on 2020-03-08 18:14  niuxiaoxia  阅读(158)  评论(0编辑  收藏  举报

导航