lesson 15 数据的组织结构二 指针与函数

时间:2026-01-16

C语言学习

Lesson 18 数据的组织结构

电气与信息工程学院计算机系张吴波制作

2013-1-28

C语言学习

3 1

学习目标: 使用指针作为函数参数

电气与信息工程学院计算机系张吴波制作

2013-1-28

C语言学习

3 2

指针作为函数参数例1:将两个数从大到小输出 要求: 通过使用函数的方法

电气与信息工程学院计算机系张吴波制作

2013-1-28

C语言学习

3 2

指针作为函数参数

做法1lesson18_01_1.c(main) …...

void swap(int *p1, int *p2); int main() { int a,b; 2000 int *p_1,*p_2; 2004 scanf("%d%d",&a,&b); p_1=&a; p_2=&b; 2008 if(a<b)swap(p_1,p_2); 200C printf("\n%d,%d\n",a,b); 2020 } COPY 2024 void swap(int *p1, int *p2) { int t; 2028 t=*p1; 202C *p1=*p2; 2030 *p2=t; return ; }电气与信息工程学院计算机系张吴波制作

9 5 5 9 2000 2004(swap)

整型变量a 整型变量b

指针pr_1指针p_2

2000 2004 5...

指针p1 指针p2整型p

2013-1-28

C语言学习

3 2

指针作为函数参数

做法2

lesson18_01_2.c…...

void swap(int *p1, int *p2); int main() { int a,b; int *p_1,*p_2; scanf("%d%d",&a,&b); 地址传递 p_1=&a; p_2=&b; if(a<b) swap(p_1,p_2); printf("%d,%d",*p_1,*p_2); COPY } void swap(int *p1, int *p2) { int *p; p=p1; p1=p2; p2=p; }电气与信息工程学院计算机系张吴波制作

(main)2000 2004 2008 200C 2020

5 9 2000 2004(swap)

整型a 整型b p_1 p_2

20242028 202C 2030

2000 2004 2002 2000 2000 ****...

指针p1 指针p2 指针p

2013-1-28

C语言学习

3 2

指针作为函数参数

例2:从键盘输入10个数,输出最大值

分析:定义一个函数,该函数返回最 大值的地址

电气与信息工程学院计算机系张吴波制作

2013-1-28

C语言学习

3 2

指针作为函数参数

lesson18_02.c

#include <stdio.h> int * findMax(int * array,int len); void input(int *array,int len); int main(){ int a[10]; int *max; input(a,10); max=findMax(a,10); printf(“最大值为=%d”,*max); return 0; }电气与信息工程学院计算机系张吴波制作 2013-1-28

C语言学习

3 2

指针作为函数参数int * findMax(int * array,int len){ int *p,* pmax=array; for(p=array;p<array+len;p++){ if(*pmax<*p) pmax=p; } return pmax; } void input(int *array,int len){ int i; for(i=0;i<len;i++){ scanf(“%d”,array+i); } return ; 电气与信息工程学院计算机系张吴波制作 }

2013-1-28

C语言学习

3 6

指针与字符串字符串是一种以字符’\0’作为结束标志的字符数组。表 示字符串可以有下面几种方法:

char str1[ ] = “This is a C program.”; char *str2 = “This is a C program.”; char *str3 = (char*)malloc(sizeof(char)*25); strcpy(str3, str2);

str1是一个含有21个元素的字符型数组,前20个元素用来 存放字符序列“This is a C program.”,最后一个元素存 放字符串结束符‘\0’;str2是一个指向字符串常量的指针; str3指向一块动态申请且可以放置25个字符的存储空间, 调用strcpy() 函数的目的是将str2所指向的字符串常量复 制到str3

指向的存储空间中。2013-1-28

电气与信息工程学院计算机系张吴波制作

C语言学习

计算字符串的长度 int strlen(char *s) { int len=0; for (; *s!='\0'; s++, len++); return len; }比较两个字符串大小 int strcmp(char *s, char *t) { for (; *s== *t; s++, t++) if (*s==’\0’) return 0;

/*对应字符比较,且两个指针同步加1*/

/* 如果比较到’\0’,两个对应字符仍相等,则返回0*/

return *s-*t;*/电气与信息工程学院计算机系张吴波制作

/*此时*s!=*t,根据对应字符的大小决定比较结果2013-1-28

}

C语言学习

3 7

动态内存分配所谓动态是指在程序运行之后,再根据实际需求 申请相应的存储空间,这样既可以满足用户在确 定所需的元素数量之后再申请空间,也可以提高

存储空间的利用率。

电气与信息工程学院计算机系张吴波制作

2013-1-28

C语言学习

3 7

动态内存分配

void *malloc(unsignedp; void * size)

在内存的动态存储区中分配一连续空间,其长度为 表示p是一个通用指针,使用可 size 以保存任意类型变量的地址, 若申请成功,则返回一个指向所分配内存空间的 使用时,需要强制转换成特定 起始地址的指针 类型的指针类型 若申请内存空间不成功,则返回NULL(值为0) 返回值类型:(void *) 将malloc的返回值转换到特定指针类型,赋给一 个指针电气与信息工程学院计算机系张吴波制作 2013-1-28

C语言学习

3 7

动态内存分配

void free(void *ptr)释放由动态存储分配函数申请到的整块内 存空间,ptr为指向要释放空间的首地址。 当某个动态分配的存储块不再用时,要及时 将它释放

电气与信息工程学院计算机系张吴波制作

2013-1-28

C语言学习

3 2

链表的概念本来是一个个 散落铁环!

关于铁链的故事

却变成了坚不可 摧的铁链!!

电气与信息工程学院计算机系张吴波制作

2013-1-28

C语言学习

3 2

链表的概念

其中的秘密:

把铁环首尾连 接起来!

电气与信息工程学院计算机系张吴波制作

2013-1-28

C语言学习…… 此处隐藏:1124字,全部文档内容请下载后查看。喜欢就下载吧 ……

lesson 15 数据的组织结构二 指针与函数.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219