C语言(谭浩强版本,主讲人:小甲鱼)P41-P49

指针

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
void main()
{
	int i = 2000;
	int* pointer;
	pointer = &i;
	printf("%d", *pointer);
}
//2000

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
void main()
{
	int a, b;//定义了两个整形局部变量
	int*pointer_1,*pointer_2;//定义了两个整形指针变量

	a = 100;
	b = 10;
	pointer_1 = &a;//将a的地址赋给pointer_1
	pointer_2 = &b;//将b的地址赋给pointer_2

	printf("%d\n", a);//打印a的值
	printf("%d\n", b);//打印b的值

	printf("%d\n", *pointer_1);//打印a对应地址的值
	printf("%d\n", *pointer_2);//打印b对应地址的值
}
//100
//10
//100
//10

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用指针的方法

#include<stdio.h>
void main()
{
	int a, b,*p1,*p2,*p;
	printf("请分别输入两个整形:");
	scanf("%d %d", &a, &b);
	p1 = &a;
	p2 = &b;
	if (a < b)
	{
		p = p2;
		p2 = p1;
		p1 = p;
	}
	//p1指向b,p2指向a
	printf("a=%d,b=%d\n", a, b);
	printf("max=%d,min=%d\n", *p1, *p2);
}
//请分别输入两个整形:2321 23
//a=2321,b=23
//max=2321,min=23

使用普通方法

#include<stdio.h>
void main()
{
	int a, b,temp;
	printf("请分别输入两个整形:");
	scanf("%d %d", &a, &b);
	if (a < b)
	{
		temp = b;
		b = a;
		a = temp;
	}
	printf("max=%d,min=%d\n", a, b);
}
//请分别输入两个整形:3232 2
//max = 3232, min = 2

使用函数方法

#include<stdio.h>
void swap(int* p1, int* p2);
void main()
{
	int a, b;
	int *p1, * p2;
	printf("请分别输入两个整形:");
	scanf("%d %d", &a, &b);//52 32
	p1 = &a;//p1=a的地址
	p2 = &b;//p2=b的地址
	if (a < b)
	{
		swap(p1, p2);//swap(52,32)
	}
	printf("max=%d,min=%d", a, b);
	
}
void swap(int* p1, int* p2)//swap(52,32)
{
	int temp;
	temp = *p2;
	*p2 = *p1;
	*p1 = temp;
}
//请分别输入两个整形:3232 4
//max = 3232, min = 4

在这里插入图片描述

#include<stdio.h>
void main()
{
	int a, b, c, *p1, * p2, * p3, * p;
	printf("请分别输入三个整形:");
	scanf("%d %d %d", &a, &b,&c);
	p1 = &a;
	p2 = &b;
	p3 = &c;
	if (a < b)
	{
		p = p2;
		p2 = p1;
		p1 = p;
	}
	if (a < c)
	{
		p = p3;
		p3 = p1;
		p1 = p;
	}
	if (b < c)
	{
		p = p3;
		p3 = p2;
		p2 = p;
	}
	printf("a=%d,b=%d,c=%d\n", a, b,c);
	printf("max=%d\n", *p1);
}
//请分别输入三个整形:32 232 12
//a = 32, b = 232, c = 12
//max = 232

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>
void first(int a[]);
void second(int a[]);
void third(int a[]);
void main()
{
	int a[10];
	printf("请分别输入10个整数:");
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &a[i]);
	}
	first(a);
	second(a);
	third(a);
	
}
void first(int a[])//第一种:下标法
{
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
}
void second(int a[])//第二种:通过数组名计算数组元素地址,找出元素的值。
{
	for (int i = 0; i < 10; i++)
	{
		printf("%d ",*(a+i));//a+0=a[0] i是单位 a+1等于a[0]的下一个单位a[1]
	}
	printf("\n");
}
void third(int a[])//第三种:用指针变量指向数组元素
{
	int* p;
	for (p=a; p<(a+10); p++)
	{
		printf("%d ", *p);
	}
	printf("\n");
}
//请分别输入10个整数:9 8 7 6 5 4 3 2 1 0
//9 8 7 6 5 4 3 2 1 0
//9 8 7 6 5 4 3 2 1 0
//9 8 7 6 5 4 3 2 1 0

在这里插入图片描述
在这里插入图片描述

#include <stdio.h>
void first(int *a);
void main()
{
	int a[10];
	printf("请分别输入10个整数:");
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &a[i]);
	}
	first(a);
	
	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");

	int* p;
	for (p = a; p < (a+10); p++)//第三种
	{
		printf("%d ", *p);
	}
	printf("\n");
}
void first(int *a)
{
	int c;
	for (int i = 0; i <10/2; i++) {
		c= a[i];
		a[i] = a[10-1-i];
		a[10-1-i] = c;
	}

}
//请分别输入10个整数:232 123 233 4323 23213 3231 323 8484 723 775
//775 723 8484 323 3231 23213 4323 233 123 232
//775 723 8484 323 3231 23213 4323 233 123 232
//775 723 8484 323 3231 23213 4323 233 123 232

在这里插入图片描述

第一个版本

#include <stdio.h>
void first(int a[]);
int max, min;
void main()
{
	int a[10];
	printf("请分别输入10个整数:");
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &a[i]);
	}
	first(a);
	printf("max=%d,min=%d", max, min);
}
void first(int a[])
{
	max = *a;
	min = *a;
	for (int i = 0; i < 10; i++)
	{
		if (max < *(a + i))
		{
			max = *(a + i);
		}
		if (min > * (a + i))
		{
			min = *(a + i);
		}
	}
}
//请分别输入10个整数:21 23 87 46 83 96 68 54 27 74
//max = 96, min = 21

第二个版本

#include <stdio.h>
void first(int *a);
int max, min;
void main()
{
	int a[10];
	printf("请分别输入10个整数:");
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &a[i]);
	}
	first(a);
	printf("max=%d,min=%d", max, min);
}
void first(int a[])
{
	max = *a;
	min = *a;
	int* p;
	for (p = a; p < (a + 10); p++)
	{
		if (max < *p)
		{
			max = *p;
		}
		if (min > * p)
		{
			min = *p;
		}
	}
}
//请分别输入10个整数:21 23 87 46 83 96 68 54 27 74
//max = 96, min = 21

第三个版本

#include <stdio.h>
void first(int a[]);
int max, min;
void main()
{
	int a[10];
	printf("请分别输入10个整数:");
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &a[i]);
	}
	first(a);
	printf("max=%d,min=%d", max, min);
}
void first(int a[])
{
	max = a[0];
	min = a[0];
	for (int i = 0; i < 10; i++)
	{
		if (max < a[i]))
		{
			max = a[i];
		}
		if (min > a[i])
		{
			min = a[i];
		}
	}
}
//请分别输入10个整数:21 23 87 46 83 96 68 54 27 74
//max = 96, min = 21

在这里插入图片描述

#include <stdio.h>
void first(int *a);
void second(int* a);
void main()
{
	int a[10];
	printf("请分别输入10个整数:");
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &a[i]);
	}
	first(a);
	second(a);
}
void first(int a[])
{
	for (int i = 0; i < 9; i++)
	{
		for (int j = i + 1; j < 10; j++)
		{
			if (*(a+j) > *(a + i))
			{
				int temp = *(a + j);
				*(a + j) = *(a + i);
				*(a + i) = temp;
			}

		}
	}
	printf("从大到小的排序为:");
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
}
void second(int a[])
{
	int *p1;
	int *p2;
	for (p1 = a; p1 <(a+ 9); p1++)
	{
		for (p2 = a + 1; p2 < (a+10); p2++)
		{
			if (*p2 < *p1)
			{
				int temp = *p1;
				*p1 = *p2;
				*p2 = temp;
			}

		}
	}
	printf("从小到大的排序为:");
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
}
//请分别输入10个整数:14 17 27 82 44 77 92 36 99 65
//从大到小的排序为:99 92 82 77 65 44 36 27 17 14
//从小到大的排序为 : 14 17 27 36 44 65 77 82 92 99

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>
void main()
{
	int a[6] = { 0,1,2,3,4,5 };//一维数组
	printf("a:%d\n", a);//a[0]的首地址
	printf("*a:%d\n", *a);//a[0]的元素值
	printf("a[0]:%d\n", a[0]);//a[0]的元素值
	printf("&a[0]:%d\n", &a[0]);//a[0]的首地址

	printf("a+1:%d\n", a + 1);//a[1]的首地址
	printf("*(a+1):%d\n", *(a + 1));//a[1]的元素值
	printf("a[1]:%d\n", a[1]);//a[1]的元素值
	printf("&a[1]:%d\n", &a[1]);//a[1]的首地址

	printf("a+2:%d\n", a + 2);//a[2]的首地址
	printf("*(a+2):%d\n", *(a + 2));//a[2]的元素值
	printf("a[2]:%d\n", a[2]);//a[2]的元素值
	printf("&a[2]:%d\n", &a[2]);//a[2]的首地址

	printf("a[1]+1:%d\n", a[1] + 1);//a[1]的元素值+1
	printf("*(a+1)+1:%d\n", *(a + 1) + 1);//a[1]的元素值+1
}
/*
a:19921496
*a:0
a[0]:0
&a[0]:19921496
a+1:19921500
*(a+1):1
a[1]:1
&a[1]:19921500
a+2:19921504
*(a+2):2
a[2]:2
&a[2]:19921504
a[1]+1:2
*(a+1)+1:2
*/
#include <stdio.h>
void main()
{
	int a[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };//二维数组
	printf("a:%d\n", a);//a[0][0]的首地址
	printf("*a:%d\n", *a);//a[0][0]的首地址
	printf("a[0]:%d\n", a[0]);//a[0][0]的首地址
	printf("&a[0]:%d\n", &a[0]);//a[0][0]的首地址
	printf("&a[0][0]:%d\n", &a[0][0]);//a[0][0]的首地址

	printf("a+1:%d\n", a+1);//a[1][0]的首地址
	printf("*(a+1):%d\n", *(a + 1));//a[1][0]的首地址
	printf("a[1]:%d\n", a[1]);//a[1][0]的首地址
	printf("&a[1]:%d\n", &a[1]);//a[1][0]的首地址
	printf("&a[1][0]:%d\n", &a[1][0]);//a[1][0]的首地址

	printf("a+2:%d\n", a + 2);//a[2][0]的首地址
	printf("*(a+2):%d\n", *(a + 2));//a[2][0]的首地址
	printf("a[2]:%d\n", a[2]);//a[2][0]的首地址
	printf("&a[2]:%d\n", &a[2]);//a[2][0]的首地址
	printf("&a[2][0]:%d\n", &a[2][0]);//a[2][0]的首地址

	printf("a[1]+1:%d\n", a[1] + 1);//a[1][1]的首地址
	printf("*(a+1)+1:%d\n", *(a + 1) + 1);//a[1][1]的首地址
	printf("*(a[1]+1):%d\n", *(a[1] + 1));//a[1][1]的值
	printf("*(*(a+1)+1):%d\n", *(*(a + 1) + 1));//a[1][1]的值
}
//a:14024360
//* a : 14024360
//a[0] : 14024360
//& a[0] : 14024360
//& a[0][0] : 14024360

//a + 1 : 14024376
//* (a + 1) : 14024376
//a[1] : 14024376
//& a[1] : 14024376
//& a[1][0] : 14024376

//a + 2 : 14024392
//* (a + 2) : 14024392
//a[2] : 14024392
//& a[2] : 14024392
//& a[2][0] : 14024392

//a[1] + 1 : 14024380
//* (a + 1) + 1 : 14024380
//* (a[1] + 1) : 5
//* (*(a + 1) + 1) : 5

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第一个版本

#include <stdio.h>
void main()
{
	int a[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };//二维数组
	int(*p)[4];
	p = a;//a==*a==a[0]==&a[0]==&a[0][0]
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d ", *(*(p + i) + j));
		}
		printf("\n");
	}
}
//0 1 2 3
//4 5 6 7
//8 9 10 11

第二个版本

#include <stdio.h>
void main()
{
	int a[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };//二维数组
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d ", *(*(a + i) + j));
		}
		printf("\n");
	}
}
//0 1 2 3
//4 5 6 7
//8 9 10 11

第三个版本

#include <stdio.h>
void main()
{
	int a[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };//二维数组
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
}
//0 1 2 3
//4 5 6 7
//8 9 10 11

在这里插入图片描述
第一种方法

#include <stdio.h>
void main()
{
	int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
	int r, l;
	printf("r=");
	scanf("%d", &r);
	while (r >= 3|| r < 0)
	{
		printf("r=");
		scanf("%d", &r);
	}
	printf("l=");
	scanf(" %d", &l);
	while (l >= 4 || l < 0)
	{
		printf("l=");
		scanf(" %d", &l);
	}
	printf("%d", a[r][l]);
}
//r = 4
//r = 1
//l = 2
//7
}

第二种方法

#include <stdio.h>
void main()
{
	int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
	int(*p)[4];//change
	int r, l;
	p = a;
	printf("r=");
	scanf("%d", &r);
	while (r >= 3|| r < 0)
	{
		printf("r=");
		scanf("%d", &r);
	}
	printf("l=");
	scanf(" %d", &l);
	while (l >= 4 || l < 0)
	{
		printf("l=");
		scanf(" %d", &l);
	}
	printf("%d", *(*(p + r) + l));//change
}
//r = 4
//r = 1
//l = 2
//7

在这里插入图片描述

#include <stdio.h>
void main()
{
	char *string="I Love Fishc.com!";
	//char string[]="I Love Fishc.com!";
	printf("%s", string);
}

两者对比(一个是指针,一个是数组)
在这里插入图片描述
在这里插入图片描述
普通方法

#include <stdio.h>
void main()
{
	char a[] = "I Love FishC!";
	char b[40];
	int i;
	for (i = 0; a[i]!='\0'; i++)
	{
		b[i] = a[i];
	}
	b[i] = '\0';
	for (int i = 0; b[i]!='\0'; i++)
	{
		printf("%c", b[i]);
	}
}

下标法

#include <stdio.h>
void main()
{
	char a[] = "I Love FishC!";
	char b[40];
	int i;
	for (i = 0; *(a + i) != 0; i++)
	{
		*(b + i) = *(a + i);
	}
	*(b + i) = '\0';
	for (int i = 0; b[i] != '\0'; i++)
	{
		printf("%c", b[i]);
	}
}
//I Love FishC!

指针方法

#include <stdio.h>
void main()
{
	char a[]="I Love FishC!";
	char b[40];
	char *p1;
	char *p2;
	p1 = a;
	p2 = b;
	for (;*p1!='\0'; p1++,p2++)
	{
		*p2= *p1;
	}
	*p2 = '\0';
	for (int i = 0; b[i]!='\0'; i++)
	{
		printf("%c", b[i]);
	}
}
//I Love FishC!

在这里插入图片描述

#include <stdio.h>
char copy(char from[], char to[]);
void main()
{
	char a[] = "I Love FishC!";
	char b[] = "I Love Chian!";
	printf("a=%s\nb=%s\n", a, b);
	copy(a, b);
	printf("a=%s\nb=%s\n", a, b);
}
char copy(char from[], char to[])
{
	int i;
	for (i = 0; from[i] != '\0'; i++)
	{
		to[i] = from[i];
	}
	to[i] = '\0';
}
//a = I Love FishC!
//b = I Love Chian!
//a = I Love FishC!
//b = I Love FishC!
#include <stdio.h>
void copy(char* p1, char* p2);
void main()
{
	char a[] = "I Love FishC!";
	char b[] = "I Love Chian!";
	char* p1, * p2;
	p1 = a;
	p2 = b;
	printf("a=%s\nb=%s\n", a, b);
	copy(p1, p2);
	printf("a=%s\nb=%s\n", a, b);
}
void copy(char *p1, char *p2)
{
	//第一种
	//for (; *p1 != '\0'; p1++, p2++)
	//{
	//	*p2 = *p1;
	//}
	//*p2 = '\0';
	
	//第二种
	/*while ((*p2 = *p1) != '\0')
	{
		p2++;
		p1++;
	}*/
	
	//第三种
	//while ((*p2++ = *p1++) != '\0');
	
	//第四种
	/*while (*p1!= '\0')
	{
		*p2++=*p1++;
	}
	*p2='\0';*/
	
	//第五种 退出条件while(*p1='\0'=0)
	//while (*p2++ = *p1++);
	
	//第六种
	//for (; *p2++ = *p1++;);
}
//a = I Love FishC!
//b = I Love Chian!
//a = I Love FishC!
//b = I Love FishC!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

#include <stdio.h>
#if (0)
void main()
{
	int max(int, int);
	int a, b, c;
	scanf("%d %d", &a, &b);
	c = max(a, b);
	printf("max=%d", c);
}
#endif
#if (1)
void main()
{
	int max(int, int);
	int a, b, c;
	scanf("%d %d", &a, &b);
	int(*p)();
	p=max;
	c = (*p)(a, b);
	printf("max=%d", c);
}
#endif
int max(int x, int y)
{
	int max;
	if (x > y)
	{
		max = x;
	}
	else
	{
		max = y;
	}
	return max;

}

在这里插入图片描述
在这里插入图片描述

#include <stdio.h>

void main()
{
	int max(int x, int y);
	int min(int x, int y);
	int add(int x, int y);
	void procss(int x, int y, int(*fun)());
	int a, b;
	scanf("%d %d", &a, &b);
	printf("max:");
	procss(a, b, max);
	printf("min:");
	procss(a, b, min);
	printf("sum:");
	procss(a, b, add);
}
void procss(int x, int y, int(*fun)())
{
	int result = (*fun)(x, y);//int result = (*max)(x, y)
	printf("%d\n", result);
}
int max(int x, int y)
{
	int max;
	if (x > y)
	{
		max = x;
	}
	else
	{
		max = y;
	}
	return max;
}
int min(int x, int y)
{
	int min;
	if (x < y)
	{
		min = x;
	}
	else
	{
		min = y;
	}
	return min;
}
int add(int x, int y)
{
	int sum;
	sum = x + y;
	return sum;
}
//23 2
//max:23
//min : 2
//sum : 25

在这里插入图片描述
在这里插入图片描述

#include <stdio.h>
void main()
{
	double score[][4] = {{79.5,89.5,99,67},{67,84,60,90.5},{77,79,97,87.5},{55,76,66,88}};
	double* search(double(*pointer)[4], int n);
	double* p;
	int m;
	scanf("%d", &m);
	p = search(score, m);
	for (int i = 0; i < 4; i++)
	{
		printf("%5.2f\t", *(p + i));
	}

}
double* search(double(*pointer)[4], int n)
{
	double* pt;
	pt = *(pointer + n);
	return pt;
}

在这里插入图片描述

#include<stdio.h>
void main()
{
	double score[][4] = { {79.5,89.5,98,67},{67,52,50,90.5},{26,56,97,87.5},{55,76,66,88} };
	double* search(double(*pointer)[4]);
	double* p;
	for (int i = 0; i < 4; i++)
	{
		p = search(score+i);
		if (p == *(score + i))
		{
			for (int j = 0; j < 4; j++)
			{
				printf("%.2f ", *(p + j));
			}
			printf("\n");
		}
	}
}
double* search(double(*pointer)[4])
{
	for (int i = 0; i < 4; i++)
	{
		if (*(*pointer + i) < 60)
		{
			return (*pointer);
		}
	}
}
//67.00 52.00 50.00 90.50
//26.00 56.00 97.00 87.50
//55.00 76.00 66.00 88.00

在这里插入图片描述

指针函数 -> int *p();

函数指针 -> int (*p)();

在这里插入图片描述

#include <stdio.h>
void main()
{
	int a[5] = { 1,2,3,4,5 };
	int* name[5] = {&a[0],&a[1], &a[2], &a[3], &a[4] };
	for (int i = 0; i < 5; i++)
	{
		printf("%d ", *name[i]);
	}
}
//1 2 3 4 5

在这里插入图片描述

#include <stdio.h>
#include <string.h>
void main()
{
	char *str[] = {"I Love You","Shift","Love You","Thank You","Giao"};
	void sort(char* name[], int n);
	sort(str, 5);
	for (int i = 0; i < 5; i++)
	{
		printf("%s\n", str[i]);
	}
}
void sort(char* name[], int n)
{
	int k;
	char*temp;
	for (int i = 0; i < 4; i++)
	{
		k = i;
		for (int j = i + 1; j < 5; j++)
		{
			if (strcmp(name[k], name[j]) > 0)
			{
				k = j;
			}
			if (k != i)
			{
				temp = name[i];
				name[i] = name[k];
				name[k] = temp;
			}
		}
	}
}
//Giao
//I Love You
//Love You
//Shift
//Thank You

在这里插入图片描述

#include <stdio.h>
void main()
{
	char *str[] = {"I Love You","Shift","Love You","Thank You","Giao"};
	char** p;
	for (int i = 0; i < 5; i++)
	{
		p = str + i;
		printf("%s\n", *p);
	}
}
//I Love You
//Shift
//Love You
//Thank You
//Giao

在这里插入图片描述
第一

#include <stdio.h>
void main()
{
	int max = 100;
	printf("max=%d", max);
}
//max = 100

第二

#include <stdio.h>
void main()
{
	int max = 100;
	int* p;
	p = &max;
	printf("max=%d", *p);
}
//max = 100

第三

#include <stdio.h>
void main()
{
	int a[] = {10,50,100};
	int max=a[0];
	for (int i = 0; i<3; i++)
	{
		if (max < a[i])
		{
			max = a[i];
		}
	}
	printf("max=%d", max);
}
//max = 100

第四

#include <stdio.h>
void main()
{
	int a[] = {10,50,100};
	int max = a[0];
	int* name[] = { &a[0],&a[1], &a[2]};
	for (int i = 0; i < 3; i++)
	{
		if (max < *name[i])
		{
			max=*name[i];
		}
	}
	printf("max=%d", max);
}
//max = 100

第五

#include <stdio.h>
void main()
{
	int a[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };//二维数组
	int(*p)[4];
	p = a;//a==*a==a[0]==&a[0]==&a[0][0]
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d ", *(*(p + i) + j));
		}
		printf("\n");
	}
}
//0 1 2 3
//4 5 6 7
//8 9 10 11

第六

#include <stdio.h>
void main()
{
	int a[] = {10,50,100};
	int max(int a[]);
	int b;
	b = max(a);
	printf("max=%d", b);
}
int max(int a[])
{
	int result = a[0];
	for (int i = 0; i < 3; i++)
	{
		if (result < a[i])
		{
			result = a[i];
		}
	}
	return result;
}
//max = 100

第七

在这里插入代码片

第八

#include <stdio.h>
void main()
{
	int max(int, int);
	int a, b, c;
	scanf("%d %d", &a, &b);
	int(*p)();
	p=max;
	c = (*p)(a, b);
	printf("max=%d", c);
}
int max(int x, int y)
{
	int max;
	if (x > y)
	{
		max = x;
	}
	else
	{
		max = y;
	}
	return max;
}
//20 100
//max = 100

第九

#include <stdio.h>
void main()
{
	int* str[] = {10,20,100};
	int** p;
	int *max = str[0];
	for (int i = 0; i < 3; i++)
	{
		p = str + i;
		if (max <p )
		{
			max = p;
		}
	}
	printf("max:%d", *max);
}
//max:100

在这里插入图片描述
p=array

#include <stdio.h>
void main()
{
	int str[] = {10,20,100};
	int* p;
	p = str;//p=&str[0]
	printf("%d", p);
}

在这里插入图片描述
p=max

#include<stdio.h>
void main()
{
	int max(int, int);
	int a, b, c;
	scanf("%d %d", &a, &b);
	int(*p)();
	p=max;
	c = (*p)(a, b);
	printf("max=%d", c);
}
int max(int x, int y)
{
	int max;
	if (x > y)
	{
		max = x;
	}
	else
	{
		max = y;
	}
	return max;

}

在这里插入图片描述

#include <stdio.h>
void main()
{
	int str[] = {10,20,100};
	int *p1,*p2;
	p1 = &str[0];
	p2 = &str[2];
	printf("%d", p2-p1);
}
//2
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值