//#include<stdio.h>
//#define _CRT_SECURE_NO_DEPRECATE
//#define _CRT_SECURE_NO_WARNINGS
//int main()
//{
// int a = 10, b = 20, s, t, pa, pb;
// pa = &a;
// pb = &b;
// s = pa + pb;
// t = *pa*pb;
// printf("a=%d\nb=%d\na+b=%d\n",a,b,a+b,ab);
// printf("s=%d,t=%d\n", s, t);
//
// return 0;
//}
//例子:用指针来判断的输入的数值的大小,并且又大到小输出
//int main()
//{
// int a, b, c, pmax, pmin;
// printf("input three numbers:\n");
// scanf_s("%d%d%d", &a, &b, &c);
// if (a > b)
// {
// pmax = &a;
// pmin = &b;
// }
// else
// {
// pmax = &b;
// pmin = &a;
// }
// if (c > pmax) pmax = &c;
// if (c < pmin) pmin = &c;
// printf("max = %d\nmin = %d\n", pmax, pmin);
//
//
// return 0;
//}
//c语言中规定,数组名代表数组的首地址,也就是0号地址,因此下面两个地址等价
////int a[10];
////int p;
////int p = &a[0];
////int *p = a;//数组名代表数组的首地址
//例子:输出数组中所用元素(下标法)
//int main()
//{
// int a[10], i;
// for (i = 0; i < 10; i++)
// {
// a[i] = i;
// }
// for (i = 0; i < 10; i++)
// {
// printf("a[%d]=%d\n", i, a[i]);
// }
// return 0;
//}
//例子:输出数组中全部元素。(通过数组计算元素的地址,找出元素的值)
//int main()
//{
// int a[10], i;
// for (i = 0; i < 10; i++)
// {
// (a + i) = i;//此时的a就是数组元素的首地址
// }
// for (i = 0; i < 10; i++)
// {
// printf("a[%d]=%d\n", i, (a + i));
// }
//
//
// return 0;
//}
//int main()
//{
// int a[10], i, p;
// p = a;//此时的a就是数组元素的首地址元素
// for (i = 0; i < 10; i++)
// {
// (p + i) = i;//(自己编写时犯的错误)不要忘记了给指针变量进行赋值
// }
// for (i = 0; i < 10; i++)
// {
// printf("a[%d] = %d\n", i, *(p + i));
// }
//
// return 0;
//}
//例子:
//int main()
//{
// int a[10], i, p = a;//在第一步就可以把数组元素a首地址元素赋值给指针变量p
// for (i = 0; i < 10;)
// {
// p = i;
// printf("a[%d] = %d\n", i++, *p++);//此时的i和p是i++和p++,区别好++i和++p
// }
//
// return 0;
//}
//注意几个问题:
//指针变量可以实现本身值的改变。如p++是合法;但是a++是错误的、因为a是数组名,他说数组的首地址,是常量。
//找错误
//int main()
//{
// int p, i, a[10];
// p = a;
// for (i = 0; i < 10; i++)
// {
// p++ = i;//此时给到的是都是变量i地址了
// }
// for (i = 0; i < 10; i++)
// {
// printf("a[%d] = %d\n", i, p++);
// }
// return 0;//虽然定义数组时指定包含10个元素,但是指针变量可以指到数组以后的内存单元,系统并不认为非法。
//}
////改正:
//int main()
//{
// int p, i, a[10];
// p = a;//初始化p指针变量的地址,即赋予指针变量p的一个地址,要不然在134项中因为指针没有初始化无法进行自增。
// for (i = 0; i < 10; i++)
// {
// p++ = i;
// }
// p = a;
// for (i = 0; i < 10; i++)
// {
// printf("a[%d] = %d\n", i, p++);
// }
// return 0;
//}
//*p++,由于++和*同优先级,结合方向自右向左,等价于(p++)
//(p++)与(++p)作用不同。若p的初值为a,则(p++) 等价于a[0],(++p)等价于a[1];
//(p)++表示p所指向 元素加1
//如果p当前指向a数组中的第i个元素,则:
//(p--)相当于a[i--]
//(++p)相当于a[++i]
//(--p)相当于a[--i]