C语言2文档格式.docx
《C语言2文档格式.docx》由会员分享,可在线阅读,更多相关《C语言2文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
\0'
字符。
其调用格式为:
gets(s);
其中s为字符串变量(字符串数组名或字符串指针)。
gets(s)函数与scanf("
%s"
&
s)相似,但不完全相同,使用scanf("
s)函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。
17.地址:
内存区的每一个字节有一个编号,这就是地址
18.指针:
一个特殊的变量,它是存放地址的
19.*:
取值操作符。
&
:
取址操作符
20.指针变量:
专门用来存放变量的地址的变量
21.变量的地址称为变量的指针
22.指针变量的值(即指针变量中存放的值)是地址(即指针)
23.定义一个指针变量“*”:
float*pointer_3;
//pointer_3是指向float型变量的指针变量
24.可以用赋值语句使一个指针变量得到另一个变量的地址,从而使它指向该变量
25定义一个指针变量:
指针变量前面的*,表示该变量的类型为指针型变量,其一般形式为:
类型说明符*变量名;
类型说明符表示本指针变量所指向的变量数据类型如float*pointer_1;
指针变量名是pointer_1而不是*pointer_1
26.&
和*:
自右向左
27.数组名即“翻译成数组的第一个元素的地址”
Int*p;
inta[10];
p=a;
28.指针变量无非就是一个表示内存地址的长整数而已,当然可以比较。
指向同一个数组时,两个指针的大小就表示谁指向的元素靠前或靠后。
指针是一个变量,它存放的是内存地址p作为内存地址,是可以和其他指针进行比较的,但是,无论怎么比较都是毫无意义的,它们的比较只能反映出数据所在的内存位置的前后关系
28.p++;
//指针变量p加1,指向下一个元素
29.一维数组的第i个元素地址可表示为:
数组名+i
因此一维数组a[i]中第j个元素a[i][j]地址可表示为:
a[i]+j,即:
二维数组a中第i行第j列元素a[i][j]的地址可用a[i]+j来表示(或*(a+1)+2),而元素a[i]][j]的值为:
*(a[i]+j)。
30.cout<
<
p->
data<
'
'
;
cout输出到屏幕
插入符号
datap指针指向data成员
插入一个空格
结束
合起来的意思就是把p指针指向的data成员里的内容输出到屏幕
31.a[i]表示第i行首地址(即第i行第0列地址)&
a[i][0]。
32.C语言规定:
二维数组a中第i行地址用a+i或&
a[i]表示,行地址的值与行首地址的值是相同的,即:
a+i=&
a[i]=a[i]=&
a[i][0]
33.设p为指向二维数组a【3】【4】的指针变量,可定义为:
int(*p)[4],它表示p是一个指针变量,它指向包含4个元素的一维数组。
若指向a【0】,其值等于a,a【0】,或&
a【0】【0】而p+i则指向一维数组a【i】
34*(p+i)+j是二维数组i行j列的元素的地址.
*(*(p+i)+j)则是i行j列元素的值
35.对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值charstr[20];
str=”Ilovefish!
”;
36.而对字符指针可以采用下面方法赋值(赋给a的不是字符,而是字符串第一个元素的地址)
char*a;
a=”Ilovefish!
(orchar*a=”Ilovefish”)
37.对数组的初始化:
charstr[20]={“Ilovefish”}
38.返回指针值的函数,一般定义的形式为:
类型名*函数名(参数表列)例如int*a(intx,inty);
39.指针函数:
带指针的函数,本质是一个函数
函数指针:
指向函数的指针变量
40指向指针的指针:
forexamplechar**p;
41
(1).int*p[n]:
定义指针数组p,它由n个指向整型数据的指针元素组成(一般用于处理二维数组)
赋值:
for(i=1;
i<
M;
i++)p[i]=b[i];
引用:
*p:
数组b首地址;
p+i指向数组i号元素的地址
*(p+i):
数组b的i行首地址;
b[i][j]=*(*(p+i)+j)=*(p[i]+j)=(*(p+i))[j]=p[i][j]
(2)int(*p)[n]:
p为指向含n个元素的一维数组的指针变量(即行指针)
p=b
p+i与*(p+i):
数组b的i行首地址
b[i][j]=*(*(p+i)+j)=*(p[i]+j)=(*(p+i))[j]=p[i][j]
(3)int*p():
p为带回一个指针的函数,该指针指向整型数据
(4)int(*p)():
p为指向函数的指针,该函数返回一个整型值
42.变量的间接访问:
通过变量的地址——指针;
来访问
变量的直接访问:
通过变量名访问
43.指针变量的算术运算
(1)指针p加上n意思是指针指向当前位置的后方第n个数据的地址,实际位置:
p+n*sizeof(指针类型)
(指针加1表示指向下一个数据)
(2)两个相同类型的指针相减p2-p1:
表示两个指针间相隔多少个数据,值为正时p2在p1后面(地址较高)
(3)关系运算p>
q成立时p指向较高字节;
p==q成立时p,q指向同一变量
44.指针变量的赋值运算
(1)向指针变量赋的值必须是地址常量或变量,不能是普通整数
(2)可以赋值为整数0,表示空指针
例如:
p=0或p=NULL(NULL是系统定义的标志符,表示0)
45.当指针变量里存放一个数组的首地址,此指针变量成为指向数组的指针变量,简称数组的指针
46.
(1)数组名a及a+1,……等都是指针,且为指针常量
(2)数组与指针的等价性:
当一个指针变量指向数组首地址以后,指针变量名就和数组等价.例如inta[5],*p=a;
经过上述声明和赋值后,a[i],*(a+i),*(p+i),p[i]都是等价的,都是数组i号元素的值(推论:
[]与*()等价)
但是不能写a++,因为a是数组的首地址,是常量
47.二维数组a
(1)可看成一维数组,*(a+i)=a[i]
(2)数组i行首地址:
a+i,*(a+i),a[i]
(3)a[i]+j=&
a[i][j]即为数组i行j列元素的地址
(4)a[i][j]=*(*(a+i)+j)
(5)*与[]通用数组元素的值:
a[i][j]=*(*(a+i)+j)=*(a[i]+j)=(*(a+i))[j]
数组元素的地址:
a[i][j]=*(a+i)+j=a[i]+j
(6)设数组大小:
x[M][N]则X[i][j]=*(p+i*N+j)例如:
对x[2][3],&
x[1][2]=p+1*3+2=p+5,即p+5指向x[1][2]
结论:
对普通指针变量p+i与x+i不等价(指针变量与数组名不等价,计算机认为不是同类型地址)
48.(int*)A是把A强制转化为int型指针,A应该已经定义了。
一般是右操作数。
int*A是定义整型指针变量。
49.行指针是一种形象的说法,比如现在有x行x列的表格。
p指针指向第一行,行指针特点就是比如p+1,那么p就指向下一行的首地址。
普通指针+1就指向下一个,注意是下一个地址。
行指针是指向下一行。
数组指针就是一个数组的地址,行指针出现在二维数组里就是是二级指针那里附近,例如inta[10][5];
那么二维数组可以可分为行和列,那么要找到每一个数组就要通过哪行和哪列查找,a[10][10]中第一个小标表示行,第二个下标表示列,那么a[1],a[2]表示对应行的指针,记得在二维数组中约定a[1],a[2]表示的是指针,在一维数组中a[1],a[2]表示的是元素。
50.二维数组的指针
(1)指向一维数组的指针变量
行指针定义:
数据类型(*指针变量名)[m](通常为二维数组的列数)
int(*p)[4]p为指向有m个元素的一维数组的指针变量
行指针特点:
只能指向一维数组的开头,p+i指向a[i]
指针变量p与数组名a等价
a[i][j]=*(*(p+i)+j)=*(p[i]+j)=(*(p+i))[j]=p[i][j]
(2)行指针和数组名等价,普通指针按数组在农村中存储顺序依次指向
(3)普通指针变量赋值时,必须做强制类型转换,行指针直接给数组名
(4)行指针用于正常处理二维数组元素时。
普通指针用于顺序处理二维数组时
51.字符串
表示形式
(1)字符数组法:
charstring[]=”name”;
输出:
printf(“%s\n”,string);
或for(i=0;
5;
i++)printf(“%c”,string[i]);
(2)地址常量法:
for(i=0;
i++)printf(“%c”,*(string+i));
(3)字符指针法:
charstring[]=”name”,*p=string;
整体输出:
printf(“%s\n”,p);
单字符输出:
while(*p!
=0)printf(“%c”,*p++);
(4)直接指针法:
char*p=”name”;
输出:
注意:
可用指针变量直接对字符串赋值
charstring[],*p;
p=”name”;
但不能是string=”name”
不能用指针输入字符串即不能是scanf(“%s”,p)
52.函数指针
(1)函数代码存储区的首地址称为:
函数的入口地址
(2)可以用指针变量记下函数的入口地址,这样的指针变量称为函数的指针
(3)函数指针的定义:
数据类型(*函数指针名)(形参类型表)
例:
int(*p)(int,float);
定义指针变量p可以