1./*int main(void)
{
int a[5] = { 10,20,30,40,50 };//数组间的元素地址相连的
int* p;
printf("a代表的地址:%d\n", a);//数组首个元素的地址
printf("a+1代表的地址:%d\n", a + 1);//偏移数组
printf("a+2代表的地址:%d\n", a + 2);
printf("a+3代表的地址:%d\n", a + 3);
printf("a+4代表的地址:%d\n", a + 4);
printf("\n\n");
p = a;//p[0]=a[0]
printf("p代表的地址:%d\n", p);//数组首个元素的地址
printf("p+1代表的地址:%d\n", p + 1);//偏移数组
printf("p+2代表的地址:%d\n", p+ 2);
printf("p+3代表的地址:%d\n", p + 3);
printf("p+4代表的地址:%d\n", p + 4);
printf("\n\n");
printf("p的值:%d\n", *p);
printf("*(p+1)的值:%d\n", *(p + 1));
printf("*(p+2)的值:%d\n", *(p + 2));
printf("*(p+3)的值:%d\n", *(p + 3));
printf("*(p+4)的值:%d\n", *(p + 4));
printf("\n\n");
p = &a[2];
printf("p代表的地址:%d\n", p);//数组首个元素的地址
printf("p+1代表的地址:%d\n", p + 1);//偏移数组
printf("p+2代表的地址:%d\n", p + 2);
printf("p+3代表的地址:%d\n", p + 3);//以下地址属于野指针
printf("p+4代表的地址:%d\n", p + 4);
//a=&a[2] 此时a为常量,不可修改
}*/
int main(void)
{
int a[5] = { 10,20,30,40,50 };
int* p;
p = &a[2];
printf("p[0]的值:%d\n", p[0]);
printf("p[1]的值:%d\n", p[1]);
p = a;
printf("%d\n", *p);
p++;//a[1]
printf("%d\n", *p);
//a++ 同上不可修改,是常量。可以为p++
printf("\n\n");
printf("%d\n", *p++);//20,先出来的是p,之后又++
printf("%d\n", *p);//上一步的++就在这里实现成a[2]
return 0;
}
2.
//动态初始化与常见问题(越界问题)public static void main(String[] args) { String []arr=new String[50]; arr[0]="liujiawei"; arr[1]="fanwenshuo";System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);//整数类型:0//小数类型:0.0//字符类型:“/u0000”//布尔类型:false//引用数据类型:null}