算法竞赛--指针

1.指针变量的赋值

1
2
int a;
int* p=&a;

上面的代码也可以写成:

1
2
3
int a;
int* p;
p=&a;

2.指针变量作为函数参数(数值交换)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
void change(int *p,int *q)
{
int temp=*p;
*p=*q;
*q=temp;
}
int main()
{
int a=1,b=2;
printf("%d %d\n",a,b);
change(&a,&b);
printf("%d %d\n",a,b);
return 0;
}

3.指针的引用进行数值交换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
void change(int &p,int &q)
{
int temp=p;
p=q;
q=temp;
}
int main()
{
int a=1,b=2;
printf("%d %d\n",a,b);
change(a,b);
printf("%d %d\n",a,b);
return 0;
}

4.指针变量作为函数参数对数组进行交换

方法一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
void change(char** a,char** b)//输入的参数是二级指针(指针的地址)
{
char* temp;//对指针(内容的地址)进行改变
temp= *a;//改变一件事,要传入它的地址,改变地址,就要传入地址的地址
*a= *b;//地址和指针temp等同
*b=temp;
}
int main()
{
char a[10]="abcd",b[10]="wxyz";
char *p=a,*q=b;
printf("%s %s\n",p,q);
change(&p,&q);
printf("%s %s\n",p,q);
return 0;
}

方法二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <string.h>
void change(char *p,char *q)
{
char temp[10];
strcpy(temp,p);
strcpy(p,q);
strcpy(q,temp);
}
int main()
{
char a[10]="abcd",b[10]="wxyz";
printf("%s %s\n",a,b);
change(a,b);
printf("%s %s\n",a,b);
return 0;
}

指针练习

小礼物走一个哟
0%