如何使用Visual Studio 2010编写一个C语言程序,本经验将手把手教大家如何通过VS2010编写一个简单的C语言小程序......
2023-03-16 436 C语言
善于利用指针
指针是C的一大特色。
正确而灵活的运用它,可以使程序简洁、灵活、高效。
每一个学习和使用C语言的人都应当深入的学习和掌握指针。
返回指针值的函数
一个函数可以返回一个整型值、字符值、实型值等,也可以返回指针型的数据,即地址。
定义返回指针值的函数的一般形式:
类型名 *函数名(参数列表);
如“int *a(int x,int y);”a是函数名,调用它以后能得到int *型的指针,即整型数据的地址,x,y是形参。
例1:有a个学生,每个学生有b门课程,要求在用户输入学号后,能输出该学生的全部成绩。用指针函数实现。
编程思路:定义一个二维数组score,用来存放学生成绩(假设a=3,b=4),定义一个查询学生成绩的函数search,它是一个返回指针的函数,形参是指向一维数组的指针变量和整型变量n,从主函数将数组名score和要找的学生号k传递给形参。函数的返回值是&score[k][0]。然后在主函数输出全部成绩。
例2:有a个学生,每个学生有b门课程,找出其中不及格的课程的学生及其学生号。
编程思路:在上例的程序中进行修改。main函数不是只调用一次search函数,而是调用3次search函数,在search函数中检查3个学生有无不及格的课程,如果有,就返回该学生的0号课程的地址&score[i][0]。在main函数中检查返回值,输出有不及格学生4门课的成绩。
指针数组和多重指针
什么是指针数组
指针数组中的每一个元素均为指针型数据即地址;
定义指针数组的一般形式:
类型名 *数组名[数组长度];
如int *p[4];显然是数组形式,表示p数组中有四个元素。然后再与前面的*结合,表示此数组是指针类型的。
什么情况下用到指针数组
一般指针数组比较用来指向若干个字符串,使字符串处理更加灵活。
例:将若干字符串按字母顺序由大到小输出
编程思路:定义一个指针数组name,用各字符串对它进行初始化,即把各字符串中第一个字符的地址赋给指针数组的各元素。然后用选择法排序,但不是移动字符串,而是改变指针数组的各元素的指向。
指向指针数据的指针
指向指针数据的指针变量简称指向指针的指针。name是一个指针数组,它的每一个元素都是指针型的变量,其值为地址。name代表该指针数组首元素的地址。
name i就是name[i]的地址。可以设置一个指针变量p,指向指针数组的元素。
P就是指向指针型数据的指针变量。
定义一个指向指针数据的指针变量:
char **p;p指向指针数据的指针。
指针数组作main函数的形参
指针数组的一个重要应用就是作main函数的形参。
通常main函数的第一行是int main()或int main(void)
括号中是空或有“void”,表示main函数没有参数,调用main函数时不必给出实参。
在某些情况下,main函数可以有参数,
int main(int argc,char *argv[])
其中argc和argv就是main函数的形参,他们是程序的”命令行参数”;
什么情况下main函数需要参数?main函数的形参是从哪里传递过来的?
形参的值是不可能在main函数中的。Main函数是操作系统调用的,实参只能由操作系统给出。实参和执行文件的命令是一起给出的。
命令行的一般形式:
命令名 参数1 参数2 ……参数 n
命令名是可执行文件名;
选择“工程”“设置”“调试”“程序变量”输入实参;
动态内存分配与指向它的指针变量
C语言中允许建立内存动态分配区域,存放一些临时用的数据,这些数据可以随时开辟,随时释放。存放的特别的自由存储区成为堆(heap)区,这些数据不能用变量名或数组名引用,只能通过指针来引用。
怎样建立内存的动态分配
对内存的动态分配是通过系统的提供的库函数来实现的。
主要有:malloc,calloc,free,realloc.
头文件“#stdio.hstdlib.h>”
void *malloc(unsigned int size);
其作用是在内存动态存储区中分配一个长度为size的连续空间。
void *calloc(unsigned n, unsigned size);
其作用是在内存动态存储区中分配n个长度为size的连续空间,这个空间一般比较大,足以保存一个数组。
void free(void *p);
其作用是释放指针变量P所指向的动态空间。
void *realloc(void *p, unsigned int size);
如果已经通过malloc,colloc获得动态空间,想改变其大小,可以用realloc函数重新分配。
函数返回值都是void*类型的。
void指针类型
可以定义一个基类型为void的指针变量,它不指向任何类型的数据。指向空类型或不指向确定的类型。
在它的值赋给另一个指针变量时由系统对它进行类型转换,使之适合被赋值的变量的类型。
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
标签: C语言
相关文章
如何使用Visual Studio 2010编写一个C语言程序,本经验将手把手教大家如何通过VS2010编写一个简单的C语言小程序......
2023-03-16 436 C语言