本文最后更新于2022年02月17日,已超过11天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
void swap(int *a,int *b)
#include <stdio.h>
void main() {
void swap(int *x, int *y);
int a,b;
int *a1 = &a;
int *b1 = b;
printf("请输入a,b的值:\n");
scanf_s("%d %d", &a, &b);
if (a < b) {
swap(a1, b1);
}
printf("max = %d, min=%d\n", a, b);
}
void swap(int *x, int *y) {
int p;
p = *x;
*x = *y;
*y = p;
}
输入3个整数a,b,c,要求按由大到小的顺序将它们输出。用函数实现。
#include <stdio.h>
void main() {
void exchange(int *x, int *y,int *z);
int a,b,c;
int *a1 = &a;
int *b1 = &b;
int *c1 = &c;
printf("请输入a,b,c的值:\n");
scanf_s("%d %d %d", &a, &b, &c);
exchange(a1,b1,c1);
printf("%d, %d, %d\n", a,b,c);
}
void swap(int *x, int *y) {
int p;
p = *x;
*x = *y;
*y = p;
}
void exchange(int *x, int *y, int *z) {
void swap(int *x, int *y);
if (*x < *y) {
swap(x, y);
}
if (*x < *z) {
swap(x, z);
}
if (*y < *z) {
swap(y, z);
}
}
p + 1
p - 1
#include <stdio.h>
void main() {
int a[5] = {1,2,3,4,5};
int *a1 = &a[0]; // 或者 int *a1 = a
printf("%d, %d\n", *a1, a1);
a1 = a1 + 2;
printf("%d, %d\n",*a1, a1);
}
&a[i]
a + i
p + i
&p[i]
a[i]
*(a + i)
*(p + i)
p[i]
#include <stdio.h>
void main() {
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int *p1 = &a[0];
int *p2 = &a[6];
printf("p1的地址:%d\n",p1);
printf("p2的地址:%d\n",p2);
printf("%d\n", p2 - p1);
printf("%d\n",*p2 - *p1); // int 为4个字节
}
*++p
,等价于 *(++p)
,先使 p+1
即指向下一个组元素,再取 *p
作为此表达式的值。*p++
,等价于 *(p++)
,取 p
作为此 表达式的值,再使 p+1
。(*p)++
,先取 p
所指向的 元素值 作为 此表达式的值,再将 该元素值加1。++(*p)
,将 p
所指向的 元素值加1 作为 此表达式的值。#include <stdio.h>
void main() {
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int *p = &a[0];
printf("%d\n",*p);
printf("%d\n",*++p);
printf("%d\n",*p++);
printf("%d\n",(*p)++);
printf("%d\n",++(*p));
}
a[i]
*(a+i)
或 *(p+i)
其中a是数组名,p 是指向数组元素的指针变量,其初值 p = a有一个整型数组a,有10个元素,要求输出数组中的全部元素。
#include <stdio.h>
void main() {
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int *p;
// 下标法
for (int i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
// 通过数组名计算数组元素地址
for (int i = 0; i < 10; i++) {
printf("%d ", *(a+i));
}
printf("\n");
// 指针法
for (p=a; p <a+10; p++) {
printf("%d ", *p);
}
printf("\n");
}
a[i]
转换为 *(a+i)
处理的,即先计算元素地址。p++
能大大提高执行效率。