一维二维数组的知识。

一、数组的定义。

一维数组的定义&初始化:

int arr1[5] = {
    
    1,2,3};//整型数组的不完全初始化,后补0;数组一共开辟5个单位。
int arr2[] = {
    
    1,2,3,4};//数组一共开辟4个单位。
char arr4[5] = {
    
    'a',98, 'c'};//字符数组的不完全初始化,后补'\0';数组一共开辟5个单位。
char arr5[] = {
    
    'a','b','c'};//数组一共开辟3个单位。
char arr6[] = "abcdef";`//数组一共开辟7个单位,末尾会自动增加一个字符'\0'。

二维数组的定义&初始化:

int arr[3][4] = {
    
    1,2,3,4};//3行4列。
/*1 2 3 4
  0 0 0 0 
  0 0 0 0
*/
int arr[3][4] = {
    
    {
    
    1,2},{
    
    4,5}};//3行4列。
/*1 2 0 0
  4 5 0 0 
  0 0 0 0
*/
int arr[][4] = {
    
    {
    
    2,3},{
    
    4,5}};//2行4列。(行号可以省略,列号不能省)
/*2 3 0 0
  4 5 0 0 
*/

二、数组名不是数组首元素的地址的两种情况。

1.sizeof(数组名)。

int arr[6] = {
    
     'a','b','c','d' };
printf("%d",sizeof(arr));//打印24。数组占用了24Byte。
	//sizeof()输出的单位是字节。

2. &数组名

	int arr[] = {
    
     1,2,3,4,5 };
	printf("%p\n", arr);//代表首元素arr[0]地址                    
	printf("%p\n", arr+1); //代表arr[1]地址,以元素为单位增加
	printf("%p\n", &arr[0]);//代表首元素arr[0]地址
	printf("%p\n", &arr[0]+1);//代表arr[1]地址,以元素为单位增加
	printf("%p\n", &arr);//代表arr数组的地址
	printf("%p\n", &arr+1);//以整个数组为单位增加

猜你喜欢

转载自blog.csdn.net/weixin_45275802/article/details/112430936