傻大方


首页 > 知识库 > >

华中科技大学|华中科技大学光电子学院C语言第七章


按关键词阅读: 光电子 华中科技大学 第七 语言 学院

1、第七章 指 针 1.指针与数组的关系 2.指针与函数的关系,1 . 指针及定义 一.指针变量的定义 指针变量:存放对象地址的变量. 指针变量定义的基本形式: 类型说明符 *变量名;
例: int *pi, *pj;
/* pi,pj指向整型变量的指针变量*/ float *p3;
/* p3是指向浮点型变量的指针变量*/ 注: 1.定义指针变量的物理意义:机器给指针变量分配内存 单元,此单元只能存放对象的地址,2.指针类型是指针所指对象的类型 (指针本身没有类型) 例: int *fpi( ), *a10, (*pa)10;
/*复杂变量的指针*/ fpi是一个整型指针函数(函数返回值是指向i 。

2、nt变量的指针) a是含有10个元素的整型指针数组(每个元素是一个指向 int变量的指针) pa是指向含有10个int元素的数组的指针,二. 指针变量的运算符,指针变量运算符,:间接取对象的内容 p= /* 将0送p指向的t单元中, 即t=0*/,例: int i, j, *p;
1)i=123;
2)p= 表达式: p1,4)两种特殊指针:void指针和NULL指针 void指针: 指向空值类型的指针变量: 可以与任何类型 指针变量相互赋值(不需要强制类型转换) 如: int *p;
void *p1;
p=p1;
p1=p;
NULL指针: 具有整数0值的指针:即不指向任何对 象的指针 N 。

3、ULL符号常量: 在有定义: 或用#define NULL 0 定义,void *f() ;
/*f是无参数的指针函数*/ void *pa,例: main( ) int *p1, *p2, *p, a, b;
scanf ( “%d%d”,2. 算术运算 仅限于加法和减法 1) 指针变量加(减)一个整数. int *p, *p1;
p+;
/*访问p后,p从当前位置向后移一个单元的数据*/ p-;
/*访问p后,p从当前位置向前移一个单元的数据*/ -p;
/*访问p前,p从当前位置向前移一个单元的数据*/ p+5;
/*指向p当前所指数据后面第5个单元的数据,2).同类型指针变量之间仅只能相 。

4、减,结果为整数,(不为指 针,大小为相隔的字节数) 如: 上面 p-p1;
注: 不允许两指针变量相加,乘除,移位,屏敝运算,以及float 或double数与指针相加运算,例: 用指针定义求字符串长度的函数 int strlen ( char *s ) char *p=s;
while (*p!=0) p+;
return ( p-s);
,3.关系运算 两个指针指的类型相同,可以进行比较( , =, q 若值为非0 , 则p所指的数据位于q所指的数据 之前 , 反之为0 指针变量不能与常量比较 , 但常量0(NULL)可与任何类 型的指针变量作=或!=的比较,2.指针与数组 指针与数组有密切关系:任何由 。

5、数组下标完成的操作 ,都可由指针实现. 一一维数组的指针表示 例: int a10, *pa;
pa = (或 pa=a+0 ) 指针指向数组的首址 规定: pa+1 指向a+1 数组名是地址常量 如: pa=a;
pa+;
是有意义的操作 a=pa;
a+;
pa= 都是非法的. 访问一个数组元素:可用下标法:ai, 也可用指针法: *(p+i)或*(a+i,1).下标法: main( ) int i, min , max, a10;
for ( i=0;
i max ) max=ai ;
else if ( ai min ) min= ai;
printf ( “max=%d, min=% 。

6、dn”, max, min );
,例: 求整型数组a10中的最大值和最小值,2)用数组名访问元素 main( ) int i, min , max, a10;
for ( i=0;
i max ) max=*(a+i);
else if (*(a+i) min ) min= *(a+i);
printf ( “max=%d, min=%dn”, max, min );
,3)用指针间接访问 main( ) int *p, min, max, a10;
p=a;
for ( ;
p max) max=*p;
else if ( *p min ) min=*p;
printf ( “ max=%d, 。

7、 min=%dn”, max, min );
,注: 1.指针变量的定义和没有指明长度的数组视为一样 例: 在函数定义中;
参数说明: f ( char s ) f ( char *s ) 2. 在C语言中,只要出现未加下标的数组名,字符串常量名, 结构名,联合名或不带参数的函数名,都可以解释成指针. 因此可同指针变量一样置初值 3. 指针与字符串(字符数组) 如: char s = “Its a string”;
char *s=”Its a string”;
但有区别: 如: char *p;
/*指向一个字符的指针变量*/ p=“Its a string” /*指向字符串的串首址*/ sc 。

8、anf (“%s”, p );
/*错误,没有为p所指的 对象分配空间*/ 又如: char s ;
s=“Its a string”;
/* 错误s为地址常量*,例: lenth ( s ) /*计算s 的长度*/ char s;
int n;
for ( n=0;
sn!=0;
n+ );
return (n);
,lenth ( s ) char *s ;
int n;
for ( n=0;
*s+!=0;
n+ );
return(n);
,include main( ) static char s1 =”abcdef”;
/* 等价于char *s1= “abcded”;
*/ int。

9、string;
string = lenth (s1);
/*等价于 string=lenth(,例: 把字符串t 复制到字符串s 中的函数strcpy(s,t) 用指针 strcpy( s, t ) char *s, *t;
while ( ( *s+=*t+ ) !=0 ) ;
,用数组 strcpy( char s , char t ) int i;
for ( i=0;
(si+=ti)!=0;
);
,s+i+)=*(t+i,二.指针与多维数组 1.二维数组元素的表示 例: int a23=1,2,3, 4,5,6 ;


来源:(未知)

【学习资料】网址:/a/2021/0207/0021331018.html

标题:华中科技大学|华中科技大学光电子学院C语言第七章


上一篇:半月板|半月板损伤的治疗

下一篇:钢筋混凝土|钢筋混凝土检查井施工组织设计方案