#include <malloc.h>
#include <string.h>
#include <ctype.h>
#include "stdio.h"
/**
*
* 数组 :
* 元素类型角度:数组是相同类型的变量有序集合,
* 内存角度:;联系一大片内存空间
* 数组名数组首元素的起始地址,但并不是数组的起始地址
* c是数组首元素的地址c+1 步长4个字节
&c 是整个数组的地址&+1 步长200个字节
* @return
*/
int main0() {
int a[]={1,2};
int b[100]={1,4};
int c[200]={0};//编译时确定 所有值为零
printf("c[0]:%d \n",c[0]);
c[0]=333;
memset(c,0,sizeof(c));//显示的重置内存块
printf("c[0]:%d",c[0]);
}
/**
* 数组也是一种数据类型
* 怎么样 表达int a[10] 这种数据类型
* @return
*/
int main1(){
typedef int (MyArrayType)[5];
MyArrayType myArray; //用类型定义变量
for(int i=0;i<5;i++){
myArray[i]=i;
}
for(int i=0;i<5;i++){
printf("%d \n",myArray[i]);
}
}
/**
*
* 数组指针类型
*
* 定义指针变量的第一种方法
*
*
*/
int main2(){
char *MyArray[]={"111","3333","aaaa"};//指针数组
//数组指针 用一个指针来指向一个数组
typedef int (MyArrayType)[5];
MyArrayType myArray; //用类型定义变量
MyArrayType *pArray;//定义一个指针变量 这个指针变量指向一个数组
int myArray2[5]; //相当于一级指针
for(int i=0;i<5;i++){
myArray2[i]=i;
}
pArray=&myArray2; //相当于二级指针
for(int i=0;i<5;i++){
printf("myArray2[%d]:%d \n",i,(*pArray)[i]);
}
}
/**'
* 定义指针变量的第二种方法
* @return
*/
int main3() {
//定义一个数组指针类型
typedef int (*PArrayType)[5];
PArrayType pArray;
int myArray2[5]; //相当于一级指针
for (int i = 0; i < 5; i++) {
myArray2[i] = i;
}
pArray = &myArray2; //相当于二级指针
for (int i = 0; i < 5; i++) {
printf("myArray2[%d]:%d \n", i, (*pArray)[i]);
}
}
/**'
* 定义指针变量的第三种方法
* 前两种定义类型来定义变量 比较麻烦 下面来直接定义
* @return
*/
int main() {
//定义一个数组指针类型
int (*pArray)[5];
int myArray2[5]; //相当于一级指针
for (int i = 0; i < 5; i++) {
myArray2[i] = i;
}
pArray = &myArray2; //相当于二级指针
for (int i = 0; i < 5; i++) {
printf("myArray2[%d]:%d \n", i, (*pArray)[i]);
}
}
C 进阶数组
最新推荐文章于 2021-03-21 11:03:24 发布