首页 > 软件开发 > C语言 >

如何使用指针编写C程序-2

来源:互联网 2023-03-16 19:11:56 版权归原作者所有,如有侵权,请联系我们

善于利用指针sXf办公区 - 实用经验教程分享!

指针是C的一大特色。sXf办公区 - 实用经验教程分享!

正确而灵活的运用它,可以使程序简洁、灵活、高效。sXf办公区 - 实用经验教程分享!

每一个学习和使用C语言的人都应当深入的学习和掌握指针。sXf办公区 - 实用经验教程分享!

如何使用指针编写C程序-2sXf办公区 - 实用经验教程分享!

工具/原料

  • 计算机一台
  • Visual C 6.0编程环境

方法/步骤

  • 1

    返回指针值的函数sXf办公区 - 实用经验教程分享!

    一个函数可以返回一个整型值、字符值、实型值等,也可以返回指针型的数据,即地址。sXf办公区 - 实用经验教程分享!

    定义返回指针值的函数的一般形式:sXf办公区 - 实用经验教程分享!

    类型名 *函数名(参数列表);sXf办公区 - 实用经验教程分享!

    如“int *a(int x,int y);”a是函数名,调用它以后能得到int *型的指针,即整型数据的地址,x,y是形参。sXf办公区 - 实用经验教程分享!

    例1:有a个学生,每个学生有b门课程,要求在用户输入学号后,能输出该学生的全部成绩。用指针函数实现。sXf办公区 - 实用经验教程分享!

    编程思路:定义一个二维数组score,用来存放学生成绩(假设a=3,b=4),定义一个查询学生成绩的函数search,它是一个返回指针的函数,形参是指向一维数组的指针变量和整型变量n,从主函数将数组名score和要找的学生号k传递给形参。函数的返回值是&score[k][0]。然后在主函数输出全部成绩。sXf办公区 - 实用经验教程分享!

    如何使用指针编写C程序-2sXf办公区 - 实用经验教程分享!

  • 2

    例2:有a个学生,每个学生有b门课程,找出其中不及格的课程的学生及其学生号。sXf办公区 - 实用经验教程分享!

    编程思路:在上例的程序中进行修改。main函数不是只调用一次search函数,而是调用3次search函数,在search函数中检查3个学生有无不及格的课程,如果有,就返回该学生的0号课程的地址&score[i][0]。在main函数中检查返回值,输出有不及格学生4门课的成绩。sXf办公区 - 实用经验教程分享!

    如何使用指针编写C程序-2sXf办公区 - 实用经验教程分享!

  • 3

    指针数组和多重指针sXf办公区 - 实用经验教程分享!

    什么是指针数组sXf办公区 - 实用经验教程分享!

    指针数组中的每一个元素均为指针型数据即地址;sXf办公区 - 实用经验教程分享!

    定义指针数组的一般形式:sXf办公区 - 实用经验教程分享!

    类型名 *数组名[数组长度];sXf办公区 - 实用经验教程分享!

    如int *p[4];显然是数组形式,表示p数组中有四个元素。然后再与前面的*结合,表示此数组是指针类型的。sXf办公区 - 实用经验教程分享!

    什么情况下用到指针数组sXf办公区 - 实用经验教程分享!

    一般指针数组比较用来指向若干个字符串,使字符串处理更加灵活。sXf办公区 - 实用经验教程分享!

    例:将若干字符串按字母顺序由大到小输出sXf办公区 - 实用经验教程分享!

    编程思路:定义一个指针数组name,用各字符串对它进行初始化,即把各字符串中第一个字符的地址赋给指针数组的各元素。然后用选择法排序,但不是移动字符串,而是改变指针数组的各元素的指向。sXf办公区 - 实用经验教程分享!

    如何使用指针编写C程序-2sXf办公区 - 实用经验教程分享!

  • 4

    指向指针数据的指针sXf办公区 - 实用经验教程分享!

    指向指针数据的指针变量简称指向指针的指针。name是一个指针数组,它的每一个元素都是指针型的变量,其值为地址。name代表该指针数组首元素的地址。sXf办公区 - 实用经验教程分享!

    name i就是name[i]的地址。可以设置一个指针变量p,指向指针数组的元素。sXf办公区 - 实用经验教程分享!

    P就是指向指针型数据的指针变量。sXf办公区 - 实用经验教程分享!

    定义一个指向指针数据的指针变量:sXf办公区 - 实用经验教程分享!

    char **p;p指向指针数据的指针。sXf办公区 - 实用经验教程分享!

    如何使用指针编写C程序-2sXf办公区 - 实用经验教程分享!

  • 4相关内容非法爬取自百度经验
  • 5

    指针数组作main函数的形参sXf办公区 - 实用经验教程分享!

    指针数组的一个重要应用就是作main函数的形参。sXf办公区 - 实用经验教程分享!

    通常main函数的第一行是int main()或int main(void)sXf办公区 - 实用经验教程分享!

    括号中是空或有“void”,表示main函数没有参数,调用main函数时不必给出实参。sXf办公区 - 实用经验教程分享!

    在某些情况下,main函数可以有参数,sXf办公区 - 实用经验教程分享!

    int main(int argc,char *argv[])sXf办公区 - 实用经验教程分享!

    其中argc和argv就是main函数的形参,他们是程序的”命令行参数”;sXf办公区 - 实用经验教程分享!

    什么情况下main函数需要参数?main函数的形参是从哪里传递过来的?sXf办公区 - 实用经验教程分享!

    形参的值是不可能在main函数中的。Main函数是操作系统调用的,实参只能由操作系统给出。实参和执行文件的命令是一起给出的。sXf办公区 - 实用经验教程分享!

    命令行的一般形式:sXf办公区 - 实用经验教程分享!

    命令名 参数1 参数2 ……参数 nsXf办公区 - 实用经验教程分享!

    命令名是可执行文件名;sXf办公区 - 实用经验教程分享!

    选择“工程”“设置”“调试”“程序变量”输入实参;sXf办公区 - 实用经验教程分享!

    如何使用指针编写C程序-2sXf办公区 - 实用经验教程分享!

  • 6

    动态内存分配与指向它的指针变量sXf办公区 - 实用经验教程分享!

    C语言中允许建立内存动态分配区域,存放一些临时用的数据,这些数据可以随时开辟,随时释放。存放的特别的自由存储区成为堆(heap)区,这些数据不能用变量名或数组名引用,只能通过指针来引用。sXf办公区 - 实用经验教程分享!

    怎样建立内存的动态分配sXf办公区 - 实用经验教程分享!

    对内存的动态分配是通过系统的提供的库函数来实现的。sXf办公区 - 实用经验教程分享!

    主要有:malloc,calloc,free,realloc.sXf办公区 - 实用经验教程分享!

    头文件“#stdio.hstdlib.h>”sXf办公区 - 实用经验教程分享!

    void *malloc(unsigned int size);sXf办公区 - 实用经验教程分享!

    其作用是在内存动态存储区中分配一个长度为size的连续空间。sXf办公区 - 实用经验教程分享!

    void *calloc(unsigned n, unsigned size);sXf办公区 - 实用经验教程分享!

    其作用是在内存动态存储区中分配n个长度为size的连续空间,这个空间一般比较大,足以保存一个数组。sXf办公区 - 实用经验教程分享!

    void free(void *p);sXf办公区 - 实用经验教程分享!

    其作用是释放指针变量P所指向的动态空间。sXf办公区 - 实用经验教程分享!

    void *realloc(void *p, unsigned int size);sXf办公区 - 实用经验教程分享!

    如果已经通过malloc,colloc获得动态空间,想改变其大小,可以用realloc函数重新分配。sXf办公区 - 实用经验教程分享!

    函数返回值都是void*类型的。sXf办公区 - 实用经验教程分享!

    void指针类型sXf办公区 - 实用经验教程分享!

    可以定义一个基类型为void的指针变量,它不指向任何类型的数据。指向空类型或不指向确定的类型。sXf办公区 - 实用经验教程分享!

    在它的值赋给另一个指针变量时由系统对它进行类型转换,使之适合被赋值的变量的类型。sXf办公区 - 实用经验教程分享!

    如何使用指针编写C程序-2sXf办公区 - 实用经验教程分享!

  • 注意事项

    • 返回指针值的函数,是一个函数,这个函数返回的值是地址
    • 指针数组的数组元素是指针型数据即地址
    • 指向指针型数据的指针,又叫做二重指针
    • 指针数组能做main函数的形参,意义特殊
    • 基类型为void的指针变量,不指向任何类型的数据。指向空类型或不指向确定的类型。

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!sXf办公区 - 实用经验教程分享!


    标签: C语言

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号