define _CRT_SECURE_NO_WARNINGS
include
include
include
/*
*/
void based41() { int a[] = { 1,2 }; int b[100] = { 1,3 }; int c[200] = { 0 };//编译时 就已经确定所有的值为零
memset(c, 0, sizeof(c));//显示的 重置内存块//对一维数组://c 是数组首元素的地址 c+1 步长 4个字长//&c 是整个数组的地址 &c+1 步长 200*4return;
}
//怎么样表达int a[10]这种数据类型? int [] //类型本质:固定大小内存块的别名 void typedefarr() { typedef int(MyArrayType)[5]; //定义了一个数据类型 数组的数据类型 MyArrayType myArray; //int myArray[5] int i = 0;
for (i = 0; i < 5; i++){myArray[i] = i + 1;}for (i = 0; i < 5; i++){printf("%d", myArray[i]);}printf("\n myArray: %d, myArray+1:%d\n", myArray, myArray + 1);return;
} //通过数组类型定义数组指针 void arrpointer() {
//指针 数组char *myArray[] = { "1111","2222","333333333" };//数组指针 用一个指针指向数据typedef int(MyArrayType)[5]; //定义了一个数据类型 数组的数据类型MyArrayType myArray3; //int myArray[5]int i = 0;MyArrayType *pArray;//定义一个指针变理 这个指针变量 指向一个数组{int a;int *p = NULL;p = &a;}{int myArray2[5];pArray = &myArray2;//相当于二级指针for (i = 0; i < 5; i++){//myArray2[i] = i + 1;(*pArray)[i] = i + 1;}for (i = 0; i < 5; i++){printf("\n%d", (*pArray)[i]);}}
}
//定义数组指针变量的第二种方法 void arrpointer2() { //定义声明一个数组指针类型 typedef int(*PArrayType)[5];
PArrayType pArray; //告诉编译器给我分配一个指针变量int c[5];int i = 0;pArray = &c;for (i = 0; i < 5; i++){(*pArray)[i] = i + 1;}for (i = 0; i < 5; i++){printf("%d", (*pArray)[i]);}return;
}
//定义数组指针变量的第三种方法 //前两种方法都是通过类型定义变量 比较麻烦 void arrpointer3() { int(*pMyArray)[5]; //直接定义一个指向数组的 数组指针变量
int c[5];int i = 0;pMyArray = &c;for (i = 0; i < 5; i++){(*pMyArray)[i] = i + 1;}for (i = 0; i < 5; i++){printf("%d", (*pMyArray)[i]);}return;
}
void maind41() {
based41();//typedefarr();//arrpointer();//arrpointer2();arrpointer3();system("pause");return 0;
}
