//
// main.c
// day02
//
// Created by @pple on 16/11/28.
// Copyright © 2016年 @pple. All rights reserved.
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//数组本质基础
int main1(int argc, const char * argv[]) {
//定义一个数组类型
typedef int MyArrayType[5];//定义一种自定类型
//最基础的使用
// MyArrayType myArray;// int myArray[5];
int i;
// for (i = 0; i<5; i++) {
// myArray[i] = i+1;
// }
//
// for (i = 0; i<5; i++) {
// printf("%d\n",myArray[i]);
// }
int a[5];
//定义指针类型
//int a;
//int *a;
//对数组进行取地址参考int a,int *p; p = &a
//定义了一个指向数组的指针
MyArrayType *myArrayType = NULL;
printf("%lu\n",sizeof(*myArrayType));
printf("%p\n",myArrayType);//通过打印地址发现这里是没有分配地址
//打印了这句话以后我发现他其实就是一个数组,因为它是指针指向的数组
myArrayType = &a;//这里的意思是把指针又付给另一个数组?
printf("%p\n",myArrayType);//这里确实已经分配地址
//通过数组指针的方式来操作相关内存
for (i = 0; i<5; i++) {
//这里分析
//int a = 10
//int *p = NULL
//p = &a ==>myArrayType = &a;
(*myArrayType)[i] = i+1;//a[i] = i+1;
}
for (i = 0; i<5; i++) {
printf("%d\n",(*myArrayType)[i]);
}
return 0;
}
int main2(int argc, const char * argv[]) {
//指针数组
typedef int (*pArray)[5];//定义了一个指针数组
int a[5];
pArray pArr = NULL;
pArr = &a;
for (int i = 0; i<5; i++) {
(*pArr)[i] = i+1;
}
for (int i = 0; i < 5; i++) {
printf("%d\n",(*pArr)[i]);
}
return 0;
}
int main(int argc, const char * argv[])
{
//直接定义一个指针数组
int (*p)[5] = NULL;
int a[5];
p = &a;
int i = 0;
for (i=0; i<5; i++) {
(*p)[i] = i+1;
}
for (i=0; i<5; i++) {
printf("%d\n",(*p)[i]);
}
return 0;
}