C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)

第6周

C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)

指针做函数参数

函数传递的时候,传递的是值,p1p2传递的是地址,所以Rank()里面去且也指向了a,b
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
以上是最典型的指针用作参数的形式。
数组名相当于整形元素的真值。
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
实参状态下的数组名是不能加加减减的
但是指针的功能十分强大,在子函数中如何限制指针的功能,

如何限制指针实参的功能

C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
在int 加const 就把指针改编成指向符号常量的指针
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)

指针用作函数返回值

C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
value1是局部变量,局部变量有效范围是有限的,函数调用完之后,内存被释放了,所以里面是什么就不好说了。
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
但是当这句执行之后,子函数被释放了
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
本应该打印是20,但是实际上打印的是30,打印的值不能确定
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)

静态局部变量

C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
动态局部变量auto’,但是auto在2011年的规范之后含义变了。
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)
C程序设计进阶 Coursera 第6周 指针(指针做函数参数及指针做函数返回值)