欢迎莅临阿Q的项目

专业WP商业设计开发销售中心

C语言指针学习心得

常言道,没有学会指针等于没有学C语言。所以我下定决心,以一个设计师的身份来搞定她!指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。

五、指针型函数

#include <stdio.h>
#include <stdlib.h>

main(){
	int i;
	char *day_name(int n);
	printf("input Day No:\n");
	scanf("%d",&i);
	if(i<0) exit(1);
	printf("Day No:%2d-->%s\n",i,day_name(i));
}

char *day_name(int n){
	static char *name[]={ "Illegal day", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
	return((n<1||n>7) ? name[0] : name[n]);
}

本例中定义了一个指针型函数day_name,它的返回值指向一个字符串。该函数中定义了一个静态指针数组name。name数组初始化赋值为八个字符串,分别表示各个星期名及出错提示。形参n表示与星期名所对应的整数。在主函数中,把输入的整数i作为实参,在printf语句中调用day_name函数并把i值传送给形参n。day_name函数中的return语句包含一个条件表达式,n值若大于7或小于1则把name[0]指针返回主函数输出出错提示字符串“Illegal day”。否则返回主函数输出对应的星期名。主函数中的第7行是个条件语句,其语义是,如输入为负数(i<0)则中止程序运行退出程序。exit是一个库函数,exit(1)表示发生错误后退出程序,exit(0)表示正常退出。

应该特别注意的是函数指针变量和指针型函数这两者在写法和意义上的区别。如int(*p)()和int *p()是两个完全不同的量。

  1. int (*p)()是一个变量说明,说明p是一个指向函数入口的指针变量,该函数的返回值是整型量,(*p)的两边的括号不能少。
  2. int *p()则不是变量说明而是函数说明,说明p是一个指针型函数,其返回值是一个指向整型量的指针,*p两边没有括号。作为函数说明,在括号内最好写入形式参数,这样便于与变量说明区别。

对于指针型函数定义,int *p()只是函数头部分,一般还应该有函数体部分。

如果喜欢本文,请分享给朋友们