#include <stdio.h>
int main(){
// int a=100;
// int *p;
获取a的内容
// printf("%d\n",a);
获取a的内容
// p=&a;
// printf("%d\n",*p);
获取a的地址
//
// printf("%#p\n",p);
获取a的地址
// int *p=&a;
// printf("%*p\n",p);
// int a[10] = {1,2,3,4,23,5};
// int *p;
相当于指向a数组的首地址
// p=&a[0];
// printf("取a[0]地址%p\n",&a[0]);
获取首地址
// printf("%p\n",p);
获取第二个元素首地址
// printf("%p\n",p+1);
也可以获取数组a首地址
// p=a;
// printf("%p",p);
/*
// *p++:等同于:*p; p += 1;
// *p++ == *(p++)
// 运算后p在加1,而不是p所指向变量*p在加1
// *++p:等同于 p += 1; *p;
由于++在p的前面,++前置的含义是,先加1,得到一个新的p(它的值是原来p的值加1)。然后这个新的p再与前面的*结合.
无论是*p++还是*++p,都是指针p += 1,即p的值+1,而不是p所指向的变量*p的值+1。
++前置与++后置,只是决定了到底是先p += 1,还是先*p。++前置表示先p += 1,再*p。++后置表示先*p,在p += 1;
--前置与--后置的的分析方法++前置与++后置的一样。
(*p)++,使用()强制将*与p结合,只能先计算*p,然后对*p整体的值++。
++(*p),先*p取值,再前置++,[该值+1后]作为整个表达式的值
*/
//指针的数组
// []优先级高于*,所以他先是一个数组。然后 *修饰数组,所以是指针数组
// char *str[3];
// str[0] = "abc";
// str[1] = "zxc";
// str[2] = "asd";
// for(int i=0;i<3;i++){
// printf("%s\n",str[i]);
// }
//数组的指针
//括号优先级高,所以*p是指针,[]用来修饰*p;所以时数组指针,例如一个指向3个元素的一维数组
// int a[] = {1,2,3};
// int (*p)[3] = &a;
// for(int i=0;i<3;i++){
// printf("%d\n",(*p)[i]);
// }
return 0;
}