指针与多维数组
1
2
3
4
5
6
7
8
9
10
11
|
#
include
<stdio.h>
main()
{
int
a[
3
][
4
]={{
0
,
2
,
4
,
6
},{
1
,
3
,
5
,
7
},{
9
,
10
,
11
,
12
}};
int
*p;
for
(p=a[
0
];p<a[
0
]+
12
;p++)
{
if
((p-a[
0
])%
4
==
0
) printf(
"\n"
);
printf(
"%4d"
,*p);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
|
#
include
<stdio.h>
main()
{
int
a[
3
][
4
]={{
0
,
2
,
4
,
6
},{
1
,
3
,
5
,
7
},{
9
,
10
,
11
,
12
}};
int
(*p)[
4
],i,j;
//数据类型为(*p)[m],p是一个指针变量,指向包含m个元素的一维数组;
//p指向的是横坐标的第一个,p+0地址中的值是0,p+1的值是1,p+2的值是9。
p=a;
printf(
"请输入要输出的数组坐标"
);
scanf(
"%d,%d"
,&i,&j);
printf(
"s[%d,%d]=%d\n"
,i,j,*(*(p+i)+j));
//*(p+i)+j是行转列。
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#
include
<stdio.h>
main()
{
void
average(float *p,
int
n);
void
search(float (*p)[
4
],
int
n);
float score[
3
][
4
]={{
65
,
75
,
54
,
80
},{
78
,
90
,
89
,
76
},{
66
,
76
,
87
,
90
}};
int
n;
average(*score,
12
);
printf(
"enter a number to n:\n"
);
scanf(
"%d"
,&n);
search(score,n);
}
void
average(float *p,
int
n)
{
float *p_end=p+n,aver=
0
;
for
(;p<p_end;p++)
aver=aver+*p;
aver=aver/n;
printf(
"Average=%7.2f\n"
,aver);
}
void
search(float (*p)[
4
],
int
n)
{
int
i;
for
(i=
0
;i<
4
;i++)
printf(
"%7.2f"
,*(*(p+n)+i));
}
|
指针与字符串
1
2
3
4
5
6
|
#
include
<stdio.h>
main()
{
char string[]=
"I am a student"
;
printf(
"%s\n"
,string);
}
|
1
2
3
4
5
6
|
#
include
<stdio.h>
main()
{
char *string=
"I am a student"
;
//char a[]=” ”,*string; string=a
printf(
"%s\n"
,string);
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#
include
"stdio.h"
#
include
"string.h"
void
inv(char *s)
{
for
(;*s !=
'\0'
;s++)
{
if
(*s>=
65
&& *s<=
90
)
*s+=
32
;
else
if
(*s>=
97
&& *s<=
122
)
*s-=
32
;
}
}
main()
{
char *string,a[
10
];
string=a;
gets(string);
inv(string);
puts(string);
}
|