下载此文档

结构体与指针.ppt


文档分类:IT计算机 | 页数:约15页 举报非法文档有奖
1/15
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/15 下载此文档
文档列表 文档介绍
指针与结构体




函数指针
,即本质是一个指针变量。
int (*f) (); /* 声明一个函数指针*/
f=func; /* 将func函数的首地址赋给指针f */

:
类型(*函数指针变量名)(参数)
给函数指针变量赋值
函数指针变量名=函数名;
利用函数指针变量调用函数
(*函数指针变量名)(实参表)或者不要星号*
:
1).函数指针(指向函数的指针变量)的类型为函数返回值类型
2).函数指针的赋值不需要参数
3).函数指针可以用于调用同一类型的函数。

函数的参数可以是变量,指针,数组,数组指针,函数指针。
函数指针作为函数的参数,在函数调用时将函数的首地址传递给被调用的函数,是这个被传递的函数在函数调用时被调用。
函数指针的使用在有些情况下可以增加函数的通用性,特别在可能调用函数的函数可变的情况下。
函数指针
#include "";
typedef void ( * hello)(char *);
void say(char *,hello);
void Chinese(char *);
void English(char *);
void main(void)
{
say("小明",Chinese);
say("Tom",English);
}
void say(char *name,hello h)
{
h(name);
}
void Chinese(char *name)
{
printf("你好! %s \n\n",name);
}
void English(char *name)
{
printf("HELLO! %s \n\n",name);
}
函数指针
指针函数
,即本质是一个函数

(1)首先它是一个函数,只不过这个函数的返回值是一个地址值。
(2)指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须
赋给同类型的指针变量。
*函数名(参数表)
int *f(x,y);

:
float *fun();
float *p;
p = fun(a);
注意指针函数与函数指针区别
最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。

函数是: void* malloc(size_t size);
如果一个班有n个学生,n是在运行时由用户输入的一个整型值,则程序需要为其分配一块保存这n个学生信息的内存空间。
Struct Student* pStudent = (struct Student*)malloc(n * sizeof(struct Student));

int i = 0;
double* pDouble = (double*)malloc(100 * sizeof(double));
double* pTemp = pDouble;
srand( (unsigned)time( NULL ) );
for(; i < 100; i ++,pTemp ++)
{
(*pTemp) = rand();
}
用指针动态分配内存
我们也可以把该连续的内存空间看作是一个数组,指针变量名就为数组名。
int i = 0;
srand( (unsigned)time( NULL ) );
for(; i < 100; i ++)
{
pDouble[i] = rand();
}
C语言中释放内存空间的函数是: void* free(void* memblock);
memblock指向待释放的内存空间首地址
free(pDouble);
pDouble = NULL;
当调用free释放了相应的内存空间后,相应指针变量的值仍然保持原来的值,它不会自动变为空。如果我们不人为的把指针变量置为空或为它重新分配有效的内存空间,它所指向的就是无效的内存空间,在以后的某个时刻又重新利用,这常常导致程序的崩溃。

定义结构变量的一般格式为:
struct 结构名
{
类型变量名;
类型变量名;
...
} 结构变量;
结构名是结构的标识符不是变量名
一、结构数组
结构数组就是具有相同结构类型的变量集合。假如要定义一个班级40个同学的姓名、性别、年龄和住址, 可以

结构体与指针 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数15
  • 收藏数0 收藏
  • 顶次数0
  • 上传人lily8501
  • 文件大小233 KB
  • 时间2017-10-26