目录

  • 1 计算机概述
    • 1.1 计算机简介
    • 1.2 计算机系统
    • 1.3 数值在计算机中的表示
  • 2 C语言概述
    • 2.1 C语言发展及特点
    • 2.2 C语言程序的运行步骤和开发环境
    • 2.3 简单的C语言程序
  • 3 C语言基础
    • 3.1 变量、常量及数据类型
    • 3.2 运算符和表达式
    • 3.3 输入、输出
  • 4 选择结构
    • 4.1 计算机编程和算法
    • 4.2 if语句
    • 4.3 if嵌套和if多分支
    • 4.4 switch语句
  • 5 循环结构
    • 5.1 while语句和do...while语句
    • 5.2 for语句
    • 5.3 break语句和continue语句
    • 5.4 goto语句构成的循环
    • 5.5 嵌套循环结构
    • 5.6 程序设计举例
  • 6 函数
    • 6.1 函数的定义与调用
    • 6.2 函数的嵌套调用和递归调用
    • 6.3 作用域和生命周期
    • 6.4 章节小结与测试
  • 7 数组
    • 7.1 一维数组及应用
    • 7.2 二维数组及应用
    • 7.3 字符数组
    • 7.4 数组作为函数参数
    • 7.5 章节小结与测试
  • 8 指针
    • 8.1 指针变量
    • 8.2 指针与数组
    • 8.3 指针的多种形态
  • 9 字符串
    • 9.1 字符串概念及输入输出
    • 9.2 字符串函数
    • 9.3 指针与字符串
    • 9.4 章节小结与测试
  • 10 编译预处理
    • 10.1 宏定义
    • 10.2 文件包含
    • 10.3 条件编译
  • 11 结构体、共用体和用户定义类型
    • 11.1 结构体类型变量
    • 11.2 结构体类型数组与指针
    • 11.3 结构体与函数
    • 11.4 用指针处理链表
    • 11.5 共用体
  • 12 位运算
    • 12.1 位运算的概念和运算规则
  • 13 文件
    • 13.1 C文件概述
    • 13.2 文件的打开与关闭
    • 13.3 文件读写
    • 13.4 位置指针的定位
指针的多种形态

(一)指向函数的指针

指针可以指向函数  指针存放函数的地址

一个函数在编译时自动分配一个入口地址-----函数的地址(指针)

①定义:

数据类型  *指针变量名)(函数参数列表);

int (*p)(int,int);  //本质为指针

指针变量p指向一个函数,该函数有两个int参数,返回值是int

②指向:用指针调用函数前,必须先使指针指向该函数

p=max;

③调用:

方法:用*p代替函数名

C=(*p)(a,b)

程序举例:

#include<stdio.h>
int max(int a,int b)
{
 return a>b?a:b;
}
int main()
{
 int a=2,b=3;
 int c;
 int (*p)(int,int);   //定义指向函数的指针
 p=max;    //指向
 c=(*p)(a,b);  //调用
 printf("%d",c);
}


()返回指针值的函数

类型说明符 *函数名(参数列表)

int * fun(int x,int y);  //本质为函数

本质是一个函数,函数名为fun, 有两个参数,返回值为指针,指向int数据


(三)二级指针(指向指针的指针

指向指针的指针变量中存放的是另一指针变量的地址,故称其为指向指针的指针变量。

指向指针的指针变量的定义的一般形式为:

类型说明符 **变量名;

注意:“**”是指向指针的指针变量的标志。

程序举例:

int   **p1;      
int   *p2;
int  i=3;
p2=&i;
p1=&p2;

**p1=5;   //二级间接寻址