define _CRT_SECURE_NO_WARNINGS

include

include

include

/*

*/

void based41() { int a[] = { 1,2 }; int b[100] = { 1,3 }; int c[200] = { 0 };//编译时 就已经确定所有的值为零

  1. memset(c, 0, sizeof(c));//显示的 重置内存块
  2. //对一维数组:
  3. //c 是数组首元素的地址 c+1 步长 4个字长
  4. //&c 是整个数组的地址 &c+1 步长 200*4
  5. return;

}

//怎么样表达int a[10]这种数据类型? int [] //类型本质:固定大小内存块的别名 void typedefarr() { typedef int(MyArrayType)[5]; //定义了一个数据类型 数组的数据类型 MyArrayType myArray; //int myArray[5] int i = 0;

  1. for (i = 0; i < 5; i++)
  2. {
  3. myArray[i] = i + 1;
  4. }
  5. for (i = 0; i < 5; i++)
  6. {
  7. printf("%d", myArray[i]);
  8. }
  9. printf("\n myArray: %d, myArray+1:%d\n", myArray, myArray + 1);
  10. return;

} //通过数组类型定义数组指针 void arrpointer() {

  1. //指针 数组
  2. char *myArray[] = { "1111","2222","333333333" };
  3. //数组指针 用一个指针指向数据
  4. typedef int(MyArrayType)[5]; //定义了一个数据类型 数组的数据类型
  5. MyArrayType myArray3; //int myArray[5]
  6. int i = 0;
  7. MyArrayType *pArray;//定义一个指针变理 这个指针变量 指向一个数组
  8. {
  9. int a;
  10. int *p = NULL;
  11. p = &a;
  12. }
  13. {
  14. int myArray2[5];
  15. pArray = &myArray2;//相当于二级指针
  16. for (i = 0; i < 5; i++)
  17. {
  18. //myArray2[i] = i + 1;
  19. (*pArray)[i] = i + 1;
  20. }
  21. for (i = 0; i < 5; i++)
  22. {
  23. printf("\n%d", (*pArray)[i]);
  24. }
  25. }

}

//定义数组指针变量的第二种方法 void arrpointer2() { //定义声明一个数组指针类型 typedef int(*PArrayType)[5];

  1. PArrayType pArray; //告诉编译器给我分配一个指针变量
  2. int c[5];
  3. int i = 0;
  4. pArray = &c;
  5. for (i = 0; i < 5; i++)
  6. {
  7. (*pArray)[i] = i + 1;
  8. }
  9. for (i = 0; i < 5; i++)
  10. {
  11. printf("%d", (*pArray)[i]);
  12. }
  13. return;

}

//定义数组指针变量的第三种方法 //前两种方法都是通过类型定义变量 比较麻烦 void arrpointer3() { int(*pMyArray)[5]; //直接定义一个指向数组的 数组指针变量

  1. int c[5];
  2. int i = 0;
  3. pMyArray = &c;
  4. for (i = 0; i < 5; i++)
  5. {
  6. (*pMyArray)[i] = i + 1;
  7. }
  8. for (i = 0; i < 5; i++)
  9. {
  10. printf("%d", (*pMyArray)[i]);
  11. }
  12. return;

}

void maind41() {

  1. based41();
  2. //typedefarr();
  3. //arrpointer();
  4. //arrpointer2();
  5. arrpointer3();
  6. system("pause");
  7. return 0;

}