数组基础知识

/*
 ============================================================================
 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);
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。