/*
============================================================================
Name : TestArray.c
Author : lf
Version :
Copyright : Your copyright notice
Description : 数组的基本使用
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
int main(void) {
getArraySizeAndSize();
copyArray();
testCharArray();
return EXIT_SUCCESS;
}
/**
* 获取数组所占内存的大小和数组的长度
* 利用&array[i]和array+i取出每个元素的地址
* array+i为什么可以取出每个元素的地址?
* 因为array表示了首元素的地址,所以在其基础上+1
* 表示了下一个元素,同理+i表示从首元素开始的第i个元素的地址
*
* 小结:
* array[i]与*(array+i)等价
* &array[i]与array+i等价
*/
void getArraySizeAndSize(void){
int array[5]={0,1,2,3,4};
//数组所占的内存大小
int arraySize=sizeof(array);
//数组的长度
int arrayLength=sizeof(array)/sizeof(int);
printf("Array allocated memory:%dByte,Array length:%d\n",arraySize,arrayLength);
//遍历数组
//取出数组的首地址
printf("Array start address =%d\n",array);
//遍历数组元素
int i;
for(i=0;i<arrayLength;i++){
printf("array[%d]=%d,address is %d,%d\n",i,array[i],&array[i],array+i);
}
}
/**
* 数组是不能直接赋值的.
* 因为数组名就是该数组首元素的地址
*/
void copyArray(){
int a[2]={1,2};
int b[2];
//b=a;//错误的.
//应该采用一个for循环不断初始化b数组中的元素
}
/**
* 字符数组的注意事项:
* 1 可以用printf("%s\n",charArray);的方式打印字符数组
* 2 尤其注意字符数组最后一位应该是\0作为结束符
* 3 可以用一个字符串直接对一个字符数组赋值.
* 在这种方式时字符串的末尾会自动添加\0
*/
void testCharArray(){
char charArray[5]={'h','f','a','b','\0'};
printf("%s\n",charArray);
//如果使用了""那么会在其末尾自动加上\0
char charArray2[10]={"hello"};
//可以简写为
//char charArray2[10]="hello";
printf("%s\n",charArray2);
}
原文:http://blog.csdn.net/lfdfhl/article/details/43898895