输入 x、y 两个整数,然后将其中的值大的赋值给 x,小的赋值给 y。即:假设输入 x = 8,y = 9。就将 9 赋值给 x,8 赋值给 y。
#include <stdio.h>
void main() {
int x, y;
int* px, * py; //声明普通变量和指针变量
int t; //中间变量用于交换
scanf("%d", &x);
scanf("%d", &y); //输入两个值,赋值给 x、y
px = &x;
py = &y; //给指针变量 px、py 赋初值(关联变量 x、y)
if (*px < *py) { //利用指针来对比 x、y 的值
t = *px;
*px = *py;
*py = t;
}
printf("x = %d, y = %d", *px, *py);
}
指针访问数组元素
#include <stdio.h>
int main()
{
int nums[5] = { 4, 5, 3, 2, 7 }; //初始化
int* p = nums; //指针变量存储 nums 的首地址
printf("nums[0] = %d\n", *p);
printf("nums[1] = %d\n", *(p + 1));
for (int i = 0; i < 5; i++) {
printf("nums[%d] = %d", i, *(p + i));
}
利用字符指针复制数组数据
#include <stdio.h>
int main()
{
//初始化,定义字符串,指针,遍历变量
char sentence[] = "Do not go gentle into that good night!", word[100];
char* ch = word;
int i;
//开始遍历
for ( i = 0; sentence[i] != '\0'; i++) {
*(ch + i) = sentence[i];
}
*(ch + i) = '\0';
//输出
printf("ch = %s, word = %s", ch, word);
}
数组的多级指针
#include <stdio.h>
int main()
{
//初始化
int nums[5] = { 2, 3, 4, 5, 2 };
int* p[5];
int** pp;
int i;
//循环赋值
for (i = 0; i < 5; i++) {
p[i] = &nums[i];
}
//初始化PP,建立联系
pp = p;
//利用二级指针 pp 输出数组元素
for (i = 0; i < 5; i++) {
printf("%d", **pp);
pp++;
}
}
指针与函数
#include <string.h>//比较字符串
#include <stdio.h>
void main()
{
int strcmp();
char x[] = "Zack";
char y[] = "Rudy";
//定义一个函数指针
int (*p)() = strcmp;
check(x, y, p);
}
void check(char* x, char* y, int (*p)())
{
if (!(*p)(x, y)) {
printf("相等");
}
else {
printf("不相等");
}
}