#include<stdio.h>
#include<string.h>
int main(){
/* 1 */
// int a[3][3]={6,1,2,3,4,5};
// int *p=&a[0][0];
// printf("%d\n",&a[0][0]);
// printf("%d\n",&a[0][1]);
// printf("%d\n",&a[1][0]);
// printf("%d\n",*p);
// printf("%d\n",(a+1));
// printf("%d\n",(*a)+1);
// printf("aaa%d\n",a[3][1]);
// printf("%d\n",a[2][1]);
// int a[3][3]={1,2,3,4,5,6,7};
// printf("%d\n",a[0][1]);
// printf("%d\n",a[0][2]);
// printf("%d\n",a[0][4]); // 列索引超过2后, 同样往后遍历, 这里输出为5
/* 列索引一般不会越界,超过列数后,往下一排继续遍历 */
/* 2 */
// int a=4,b=3,c,d=9;
// c = 1||0&&0;
// printf("%d\n",c);
// printf("d=%d\n",d);
/* && 的优先级大于 || */
/* 3 */
// char arr1[]="abcdef";
// char arr2[4]="abcdef";
// char arr3[]={"abcdef"};
// char *arr4 = "abcdef";
// char *arr5[] = {
// "aa",
// "bb",
// "cc"
// };
// printf("%s\n",arr1);
// printf("a=%c\n",arr2[2]);
// printf("%s\n",arr3);
// printf("%c\n",arr4[1]);
// printf("%s",arr5[1]);
/* 上面这些数组的定义都是可行的 */
/* 4 */
// char *a = "abc",b[50]="xyzsdf";
// strcpy(b+1,a);
// printf("%s",b); //a的\0也会替代b中的's'字符, 因此输出到\0为止
// int i;
// for(i=0;i<=6;i++){
// printf("%c",b[i]);
// }
/*
1. 注意字符串复制会复制\0, 而%s遍历到\0为止, 不管后面还有无字符
2. 复制并不是全覆盖, 注意strcpy(b+1,a)
*/
/* 4 */
//#define f(z) z*z
//printf("ddd=%d\n", f(6+6));
/* 宏定义函数, 注意后面运算没加括号时, 实参传过去后再做运算 */
/* 5 */
return 0;
}