#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>

//int main()
//{
// char arr1[] = "abcdef";
// char arr2[] = "abcdef";
// char* p1 = "abcdef"; //是一个常量字符串,不能被改变
// char* p2 = "abcdef";
// if (arr1 == arr2)
// printf("arr1与arr2相等\n");
// else
// printf("arr1与arr2不相等\n");
//
// if (p1 == p2)
// printf("p1与p2相等\n");
// else
// printf("p1与p2不相等\n");
//
// return 0;
//}

// //指针数组
//int main()
//{
// /*int arr1[] = { 1,2,3,4,5 };
// int arr2[] = { 2,3,4,5,6 };
// int arr3[] = { 3,4,5,6,7 };
// int* parr[] = { arr1, arr2 ,arr3 };
// int i, j;
// for ( i = 0; i < 3; i++)
// {
// for (j = 0; j < 5; j++)
// printf("%3d", *(parr[i] + j));
// printf("\n");
// }*/
//
// //数组指针
// int arr[10] = { 0 };
// int (*p)[10] = &arr;
// printf("%p", arr + 1); //首元素+1:arr+1 与 arr相差4
// printf("%p", &arr + 1); //数组+1: &arr+1 与 &arr相差40
// /*char* arr1[10] = { 0 };
// char* (*p1)[10] = &arr1;*/
// return 0;
//}


//利用数组指针打印 ,(一维数组最好用数组直接打印)
//int main()
//{
// int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
// int(*p)[10] = &arr;
// int i;
// //第一种写法
// for ( i = 0; i < 10; i++)
// {
// printf("%d ",(*p)[i]); //p是整个数组的地址名,(*p)是首元素的数组名
// }
// printf("\n");
//
// //第二种写法
// for ( i = 0; i < 10; i++)
// {
// printf("%d ", *(*p + i)); //*p == arr
// }
// return 0;
//}

//用数组指针打印(适用于二维数组)

//void print2(int(*p)[5], int x, int y) //参数是指针的形式
//{
// int i, j;
// for (i = 0; i < x; i++)
// {
// for (j = 0; j < y; j++)
// {
// printf("%d ", (*(p + i))[j]); //这4个完全等价
// printf("%d ", p[i][j]);
// printf("%d ", *(*(p + i) + j));
// printf("%d ", *(p[i] + j));
// }
// printf("\n");
// }
//}
//
//void print1(int arr[][5],int x,int y) //参数是数组的形式
//{
// int i, j;
// for ( i = 0; i < x; i++)
// {
// for (j = 0; j < y; j++)
// printf("%d ", arr[i][j]);
// printf("\n");
// }
//}
//int main()
//{
// int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };
// print1(arr, 3, 5);
// printf("\n");
// print2(arr, 3, 5);
// return 0;
//}