课件-第10讲指针_第1页
课件-第10讲指针_第2页
课件-第10讲指针_第3页
课件-第10讲指针_第4页
课件-第10讲指针_第5页
免费预览已结束,剩余57页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

天使与

的化身─指针星期一星期一星期一•可以认为:地址和指针是同义词,变量的指针就是变量的地址星期一211房间100066星期一1000.

.

.

.

.

..

.

.

.

.

.66.

.

.

.

.

.1000星期一数组字符串变量函数常量指针星期一类型*

标识符i

n

t

*

p

i

, *

pc;星期一i

n

t

i

=

0

;i

n

t

*

p

i

= &

i

;char

c =

'

a

'

;char

*pc=

&c;星期一#

include

<stdio.

h>/*

演示指针的定义*/int

main(

){int

i=

0

;char

c=

'a'

;i

n

t

*

p

i

;char

*

pc;pi =

&

i

;pc =

&c;p

r

i

n

t

f

("变量\t

内容\t\t

地址\n");p

r

i

n

t

f

(

"

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

\

n"

);p

r

i

n

t

f

(

"i

\

t

%

d

\

t

\

t

%

p

\

n"

,i,

&

i

)

;p

r

i

n

t

f

(

"c

\

t

%

c

\

t

\

t

%

p

\

n"

,

c

,p

r

i

n

t

f

(

"

p

i

\

t

%

p

\

t

%

p

\

n"

,

p

i

,printf

(

"

pc

\

t%

p

\

t%

p\

n"

,

pc,&

c);&

p

i

)

;&

pc);p

r

i

n

t

f

(

"

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

\

n"

);printf("

pi=%

d\

tpc=%

c\

n",

*

p

i

,

*

pc

)

;r

e

t

u

r

n

0

;}p

o

i

n

t

e

r

1

.

c星期一i

n

t

*p

=

NULL;星期一星期一星期一星期一星期一星期一#

include

<stdio.

h>/*

演示指针的定义*/i

n

t

main(

){i

n

t

*

p

=

NULL;i

n

t

i

=

0

;i

n

ta

[

5

]

=

{

0

,

0

,

0

,

0

,

0

};p

=

&

i

;*p

=

1

;p

r

i

n

t

f

(

"i =

%d\n",

i

);p

=

a

;*p

=

2

;p

r

i

n

t

f

(

"

a

[

0

]=

%d\n",

a

[

0

]);p

=

&

a[

0

];*p

=

3

;p

r

i

n

t

f

(

"

a

[

0

]=

%d\n",

a

[

0

]);p

=

&

a[

4

];*p

=

4

;p

r

i

n

t

f

(

"

a

[

4

]=

%d\n",

a

[

4

]);r

e

t

u

r

n

0

;}p

o

i

n

t

e

r

2

.

c星期一#

include

<stdio.

h>/*

演示指针的赋值*/i

n

t

main(

){i

n

t

a

=

66

;i

n

t

*p=NULL;i

n

t

*q=NULL;p

=

&a;q

=

p

;//

将变量

a

的地址赋给

p//

p

的值赋给

qprint

f

("%d

%d

%d\n",

a

, *

p, *

q

);r

e

t

u

r

n

0

;}p

o

i

n

t

e

r

3

.

cp

=

a

;q

=

66

;星期一星期一#

include

<stdio.

h>/*

演示指针加操作*/int

main(

){int

*

p

=

NULL;int

*

q

=

NULL;i++)int

a

[

10

]

;int

i =

0

;for

(i=

0

;

i<

10

;{a

[i] =

i;printf("

a[%

d]

=%

d\

n", i

,

a

[

i

]

)

;}p

r

i

n

t

f

(

"

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

\

n"

);p

=

&

a[

5

];q

=

p+3;p

r

i

n

t

f

(

"

*

p =

%d\t%p\n", *

p

,

p

)

;p

r

i

n

t

f

(

"

*

q =

%d\t%p\n", *

q

,

q

);r

e

t

u

r

n

0

;}add.

c星期一#

include

<stdio.

h>/*

演示指针加减操作*/i

n

t

main(

){a

[

10

]

;i

=

0

;i

n

t

*

p

=

NULL;

i

n

t

*

q

=

NULL;

i

n

ti

n

ti

n

td

i

f

f =

0

;f

o

r

(i=

0

;

i<

10

;

i++){a

[i] =

i;printf("

a[%

d]

=%

d\

n", i

,

a

[

i

]

)

;}p

r

i

n

t

f

(

"

-

--------------

\

n"

);p

=

&

a[

5

];q

=

p

-

3

;d

i

f

f =

p

-

q

;p

r

i

n

t

f

(

"

*

p =

%d\t%p\n",

*

p

,

p

);p

r

i

n

t

f

(

"

*

p =

%d\t%p\n",

*

q

,

q

);p

r

i

n

t

f

(

"

d

i

f

f =

%d\n",

d

i

f

f

)

;r

e

t

u

r

n

0

;}指针的加减运算是以其指向的类型的字长为单位的minus.

c星期一‣pi

==

NULL;

pi

!=

NULL星期一#

include

<stdio.

h>/*

求字符串长度*/i

n

t

main(

){char

s

t

r

[

255

]

;char

*p

=

NULL;s

t

r

)

;i

n

t

l

e

ng

t

h

=

0

;scanf("%

255

s",p

=

s

t

r

;!=

'

\

0'

)w

h

i

l

e

(*p{p++;}l

e

ng

th =

p

- s

t

r

;p

r

i

n

t

f

(

"

L

e

n

g

t

h =

%d", l

e

n

g

t

h

)

;r

e

t

u

r

n

0

;}s

t

r

l

e

n

.

c星期一星期一常量指针星期一#

include

<stdio.

h>/*

演示指针标识数组*/i

n

t

main(

){i

n

t

i=

0

;i

n

t

*p

=

NULL;i

n

t

a

[

5

]

=

{

0

,

1

,

2

,

3

,

4

};p

=

a

;f

o

r

(

i

=

0

;

i<

5

;

i++){p

r

i

n

t

f

(

"

a

[

%

d

]=

%d

%d

%d

%d\n",i,

a

[

i

]

,

p

[

i

]

,

*(

a

+

i

)

,*(

p

+

i

)

)

;}r

e

t

u

r

n

0

;}p

o

i

n

t

e

r

4

.

c星期一i

n

t

*

p;i

n

t

a

[

]

=

{

1

,

2

,

3

}

;p

=

a

;p++;i

n

t

*

p;i

n

t

a

[

]

=

{

1

,

2

,

3

}

;a

=

p

;a++;星期一#

include

<stdio.

h>/*

演示字符指针和字符串*/in

t

main(){charcharchar*sp =

"I

Love C

h

i

n

a

"

;*sv =

NULL;s

t

r

[

] =

"I am

a s

t

u

d

e

n

t

"

;sv =

s

p

;sp =

s

t

r

;s

p

)

;s

v

)

;p

r

i

n

t

f

(

"

%

s

\

n"

,p

r

i

n

t

f

(

"

%

s

\

n"

,r

e

t

u

r

n

0

;}c

h

a

r

_

p

o

i

n

t

e

r

.

c星期一chars

t

r

[

]="

ILoveC

h

i

n

a

"

;char*sp="

ILoveC

h

i

n

a

"

;ILoveChina\

0ILoveChina\

0星期一#

include

<stdio.

h>/*

演示字符指针和字符串*/in

t

main(){charchar*

sp;s

t

r

[

14

];sp

=

"C

Programming";s

t

r

=

"C

Programming";p

r

i

n

t

f

(

"

%

s

\

n"

,p

r

i

n

t

f

(

"

%

s

\

n"

,s

p

)

;s

t

r

)

;r

e

t

u

r

n

0

;}a

r

r

a

y

_

e

r

r

o

r

.

c星期一#

include

<stdio.

h>/*

演示字符指针和字符串*/in

t

main(){charchar*

sp;s

t

r

[

14

];sp

=

"C

Programming";s

t

r

=

"C

Programming";p

r

i

n

t

f

(

"

%

s

\

n"

,p

r

i

n

t

f

(

"

%

s

\

n"

,s

p

)

;s

t

r

)

;r

e

t

u

r

n

0

;}a

r

r

a

y

_

e

r

r

o

r

.

c星期一#

include

<stdio.

h>/*

实现字符串拷贝*/v

o

i

d

s

t

r

_

c

p

y

(

c

h

a

r

*

d

s

t

,

char

*

s

r

c

){!=

'

\

0'

)w

h

i

l

e

(

(*

ds

t

=

*

s

r

c

){dst++;src++;}}int

main(

){charchars

1

[

255

];s2[]="Copya

s

t

r

i

n

g

.

"

;s

t

r

_

c

p

y

(

s

1

,

s

2

)

;p

r

i

n

t

f

(

"

%

s

\

n"

,

s

1

)

;p

r

i

n

t

f

(

"

%

s

\

n"

,

s

2

)

;r

e

t

u

r

n

0

;}s

t

r

c

p

y

.

c星期一char

*

t

)#

include

<stdio.

h>/*

实现字符串比较*/int

str_cmp(

char

*

s

,{f

o

r

(

;

*s

==*t

;

s++,t++){if

(*s ==

'

\

0'

)r

e

t

u

r

n

0

;}r

e

t

u

r

n

*s

-

*

t

;}int

main(

){char

*s1 =

"

ABC";char

*s2 =

"

ABE";int

d

i

f

f=

str_cmp(

s

1

,s

2

)

;p

r

i

n

t

f

(

"

%

d

\

n"

,

d

i

f

f

)

;r

e

t

u

r

n

0

;}strcmp.

c星期一#

include

<stdio.

h>i

n

t

main(){char

s

t

r

1

[

20

]=

"I am

a t

e

a

c

h

e

r

"

;chars

t

r

2s

t

r

2

[

20

]

;=

s

t

r

1

;chars

t

r

3s

t

r

3

[

20

];=

"I am

a t

e

a

c

h

e

r

"

;char

s

t

r

4

[

20

];s

t

r

4

[

]

=

"I am

a t

e

a

c

h

e

r

"

;chars

t

r

5*

s

t

r

5

;=

"I am

a t

e

a

c

h

e

r

"

;char

s

t

r

6

[

20

]

;scanf("%

s", s

t

r

6

)

;char

*

s

t

r

7

;scanf("%

s", s

t

r

7

)

;chars

t

r

8*

s

t

r

8

;=

s

t

r

1

;scanf("%

s",s

t

r

8

)

;r

e

t

u

r

n

0

;}c

h

a

r

_

a

r

r

a

y

_

p

o

i

n

t

e

r

.

c星期一星期一类型

*标识符[

常数表达式]

;i

n

t

*

p

i

[

1

0

]

;.

.

.

.

..

.

.

.

..

.

.

.

..

.

.

.

..

.

.

.

.i

n

t

类型变量i

n

t

类型变量i

n

t

类型变量i

n

t

类型变量星期一char

sname[13][20]={"

"

,

"

J

a

n

u

a

r

y

"

,

"

F

e

b

r

u

a

r

y

"

,

"

March","

A

p

r

i

l

"

,

"

M

a

y

"

,

"

Jun

e"

,

"

J

u

l

y

"

,"

August"

,

"

September","

October"

,

"November",

"December"};char

*pname[13]={"

"

,

"

J

a

n

u

a

r

y

"

,

"

F

e

b

r

u

a

r

y

"

,

"

March","

A

p

r

i

l

"

,

"

M

a

y

"

,

"

Jun

e"

,

"

J

u

l

y

"

,"

August"

,

"

September"

,

"

October"

,

"November",

"December"};sname需要分配13×20=260个char

型内存单元星期一#

include

<stdio.

h>/*

演示字符指针数组*/in

t

main(){char

*name[]={""

,

"

J

a

n

u

a

r

y

"

,

"

F

e

b

r

u

a

r

y

"

,

"

March",

"

A

p

r

i

l

"

,"

May",

"

J

u

n

e

"

,

"

J

u

l

y

"

,

"

August","

September","

O

c

t

o

b

e

r

"

,

"November",

"December"}

;i<

13

;

i++)in

t

i

;f

o

r

(i=

1

;{na

m

e[

i

]

)

;p

r

i

n

t

f

(

"

%

s

\

n"

,}r

e

t

u

r

n

0

;}print_month.

c星期一星期一星期一#

include

<stdio.

h>/*

演示指向指针的指针*/i

n

t

main(){i

n

t

i=

99

;i

n

t

*

p

i =

&i;i

n

t**

ppi =

&

p

i

;p

r

i

n

t

f

(

"

%

p%p%p\

n",&

i

,

pi,p

p

i

)

;p

r

i

n

t

f

(

"

%

d%d%d

\

n",

i

,

*

p

i

,*

*

p

p

i

)

;r

e

t

u

r

n

0

;}p

2

p.

c星期一i

n

t

*

a[

10

];i

n

t

**pa

= &

a[

0

];星期一i

n

t m

a

i

n

(

i

n

ta

r

g

c

,char*

a

r

g

v

[

]

)

;星期一char

*

a

r

g

v

[

]

)#

include

<stdio.

h>/*

打印命令行参数*/i

n

t

m

a

i

n

(

i

n

t

a

r

g

c

,{i

n

t

i

;f

o

r

(i =

0

;

i <

a

r

g

c

;

i++){printf("

argv[%

d]

=%

s\

n",i

, a

r

g

v

[

i

]

)

;}r

e

t

u

r

n

0

;}p

2

p.

c星期一星期一#

include

<stdio.

h>/*

利用指针数组实现命令行参数*/char

*

a

r

g

v

[

]

)int

m

a

i

n

(

int

a

r

g

c

,{int

i;f

o

r

(

i

=

1

;

i<

a

r

g

c

;

i++){argv++;printf("%

s%

s",

*

argv,

(

i

<

a

r

g

c

-

1

)?

"

"

:

""

);}p

r

i

n

t

f

(

"

\

n"

);r

e

t

u

r

n

0

;}echo.

c星期一星期一#

include<stdio.

h>i

n

t

*

py)v

o

i

d

swap(

int

*

px,{i

n

ttemp;temp= *

px;*px =

*

py;*py =

temp;}i

n

t

main(){i

n

t

x=33;i

n

t

y=44;x, y

)

;swap(&x, &

y);printf("

x=%d\ty=%d",r

e

t

u

r

n

0

;}swap.

c星期一星期一i

n

t

*

f

o

o

(

){i

n

t

a

=100;r

e

t

u

r

n

&a;}星期一类型

(*

标识符)

(

参数列表)

;i

n

t

(

*

f

o

o

)

(

i

n

t

x

,

i

n

t

y

)

;星期一#

include

<stdio.

h>/*

演示简单的函数指针*/o

(

c

o

n

s

tchar*

s

t

r

)v

o

i

d

s

a

y

_{p

r

i

n

t

f

(

"o

%s\n",s

t

r

)

;}=

NULL;o

;i

n

t

main(

void){v

o

i

d

(

*

f

)

(

)f

= s

a

y

_f(

"

G

u

y

s

"

);r

e

t

u

r

n

0

;}f

u

n

_

p

o

i

n

t

e

r

.

c星期一星期一v

o

i

dq

s

o

r

t

(

v

o

i

d*

base,s

i

z

e

_

t

nelem,s

i

z

e

_

t w

i

d

t

h

,i

n

t

(*

fcmp)(

const v

o

i

d*,

constv

o

i

d*))

;星期一#

include<stdio.

h>/*

通用指针演示*/v

o

i

d

f

o

o

(

v

o

i

d

*

pv){//*

pv

= '

A

'char

*

pchari

s

i

l

l

e

g

a

l=

pv;*

pchar

=

'

A

'

;}i

n

t

main(

void){char

c

;f

o

o

(

&

c

)

;p

r

i

n

t

f

(

"

%

c

\

n"

, c

)

;r

e

t

u

r

n

0

;}v

o

i

d

_

p

o

i

n

t

e

r

.

c星期一星期一0x610x620x630x64星期一#

include

<stdio.

h>/*

演示类型强制转换*/i

n

t

main(){i

n

t

a[

3

] =

{

1

,

2

,

3

};i

n

t

i

;unsigned

char

*

p;p

=(unsigned

char

*)a

;//类型强转i<

s

i

z

e

o

f

(

a

);

i++)f

o

r

(

i

=

0

;{printf("%

p\

t%

d\

n",&

p

[

i

]

,p

[

i

]

)

;}r

e

t

u

r

n

0

;}p

o

i

n

t

e

r

_

t

r

a

n

s

f

e

r

.

c星期一#

include

#

include

#

include<stdio.

h><stdlib.

h><string.

h>/*

实现回调函数,并调用系统自带的q

s

o

r

t

函数*/i

n

t

cmp_int(

const

v

o

i

d

*

a

,

cons

t

v

o

i

d

*

b);i

n

t

cmp_str(

const

v

o

i

d

*

a

,

cons

t

v

o

i

d

*

b);i

n

t

main(){i

n

t

i=

0

;i

n

t

a[

10

]

=

{

2

,

5

,

3

,

1

,

8

,

7

,

9

,

6

,

4

,

0

};char

b[

5

][

5

]

=

{

"

C

c

"

,

"

B

b

"

,

"

A

a"

,

"

E

e"

,

"

D

d

"

};q

s

o

r

t

(

a

,

10

,

s

i

z

e

o

f

(

i

n

t

),

cmp_int);q

s

o

r

t

(

b

,

5

,

5

,

cmp_str);f

o

r

(

i

=

0

;

i<

10

;

i++){p

r

i

n

t

f

(

"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论