lesson 15 数据的组织结构二 指针与函数
时间:2026-01-16
时间: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
上一篇:上汽荣威爱车讲堂