C指针那点事儿

  • 指针: 用来存放变量地址的变量,就成为"指针变量".
  • 定义: 一般形式:类名标识符 *指针变量名;

int *p;

float *q;

  • "*"是说明符,用来说明这个变量是个指针变量,是不能省略的,但不属于变量名的一部分
  • 前面的类型标志符表示指针变量所只想的变量的类型,而且只能指向这种类型的变量

示例1:值交换

 

示例2:函数多个返回值

示例3:用指针遍历字符串

指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的。

返回指针的函数的一般形式为:类型名 * 函数名(参数列表)

示例4:比如下面这个函数,返回一个指向char类型变量的指针

指向函数的指针函数作为一段程序,在内存中也要占据部分存储空间,它也有一个起始地址,即函数的入口地址。函数有自己的地址,那就好办了,我们的指针变量就是用来存储地址的。因此,可以利用一个指针指向一个函数。其中,函数名就代表着函数的地址。

定义的一般形式:函数的返回值类型 (*指针变量名)(形式参数1, 形式参数2, ...);

指向指针的函数注意

1> 由于这类指针变量存储的是一个函数的入口地址,所以对它们作加减运算(比如p++)是无意义的。难道p++就会指向下一个函数了?可笑至极!!没这回事。

2> 返回指针的函数的定义char upper(char str) 和 指向函数的指针的定义int ( *p)(int a, int b)非常相似,使用时特别注意区分

3> 指向函数的指针变量主要有两个用途:

调用函数

将函数作为参数在函数间传递。我这么一说,可能还不是很明白,举个例子。

  • 每个结构体变量都有自己的存储空间和地址,因此指针也可以指向结构体变量

  • 结构体指针变量的定义形式:struct 结构体名称 *指针变量名

  • 有了指向结构体的指针,那么就有3种访问结构体成员的方式

结构体变量名.成员名

(*指针变量名).成员名

指针变量名->成员名

永不止步步 发表于12-28 10:08 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:308217个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号