数组总结及其实例详解

一、一维数组
定义:类型名 数组名[数组大小] ;注:数组大小不可是变量,只可是数字或宏定义值
列:char arr1[5]={‘1’,’a’,’A’};
char arr3[]={“1aA”};//arr[]=”1aA”同于arr[]={“1aA”}

define N 5

int arr[10];
char arr[N];//此处arr[N]=arr[10]
sizeof(arr)/sizeof(arr[0]);//求数组大小,此法仅用于和数组定义在同一函数中,若以数组作为函数参数,则作为形参的函数中不可求数组大小(因为此时sizeof(arr)计算的是首元素所占字节,而不是数组总字节大小),因此数组作为参数时,应将数组大小一起传递。
注:一维数组名表示数组首地址
1、strlen();参数为数组地址,统计数组中传入的地址到’\0’之前的元素个数,不包含’\0’;数组中无’\0’,则返回一个随机值
2、一维数组中只能存放一个字符串,存放字符串时将其拆为多个字符存放在数组中
列:char arr3[5]=”1a\0A”;arr[0]=1;arr[1]=a,arr[2]=\0,
arr[3]=A,arr[4]=’\0’,arr[5]=null;
3、字符\0和\n打印出来为空格和换行而不是\0,\n

二、二维字符数组
1、二维数组相当于由多个一维数组组成
2、定义:
char arr[3][3]={ {‘1’,’2’,’3’},{‘3’,’4’,’7’},{‘5’,’\0’,’1’}};
有3*3个元素。
二维数组大小计算:
sizeof(arr)/sizeof(arr[0][0]);//数组总大小.3*3/1=9,有3*3/1个元素,字符1个元素占1个字节
注:二维数组名代表数组首地址
1、&arr=&arr[0]=arr+0=&arr[0][0],表示0行0列元素地址
2、&arr[0][j]=arr[0]+j=arr+j=&arr[0][j],0行j列元素地址
3、二维数组中,i行的地址与i行的第一个元素地址值相同,表示范围不同
即*(arr+i)=arr[i]//表示i行地址
sizeof(arr[0])=sizeof(*(arr+0))//第0行元素所占字节
4、字符数组存放字符(一维与二维相同),若无’\0’则用strlen()函数求出的数组大小为随机值,有’\0’则求的值为从传入递的地址到第一个’\0’之前的大小


三、二维字符串数组

定义:

char ch1[3][5]={"123","你h",{"anv"}};//前一个数3表式字符串个数,后一个数5表式每个字符串最大长度(字符个数-1),包含'\0'

sizeof(ch1) 数组所占总字节大小

sizeof(ch1)/sizeof(ch1[0]) 计算数组可存多少字符串

strlen(ch1[i])计算第i个字符串的字符个数不含'\0'

ch1表式首地址

ch1[0] 表式第一个字符串地址

&ch1[i][j] 表式第i个字符串的第j个字符地址

sizeof(&ch1) 一个地址变量所占字节大小(4)

sizeof(ch1[i]) 一个字符串所定义字节大小 5

sizeof(&ch1[0]) 一个地址变量所占字节大小(4)


四、指针数组
定义:
char *arr2[]={“123as”};//指针数组不可省去{}
char *arr3[2]={ {“\n1a”},{“123\043”}};
char *arr4[3][2]={ {“12345”,”ABC”},{“abcd”},{“你好”}};//汉字可存 储在字符指针变量或字符指针数组中
注:
1、指针数组中使用strlen()计算字符串中字符个数时,会跳过’\0’,统计除’\0’的所有字符。非指针数组计算时统计’\0’之前字符
2、’\0和’\n’不可用字符方式输出打印,输出为换行和空格。注:若’\0’后有数字,则还可能输出其他字符
3、数组中的每个字符串都有 1个地址
4、指针数组arr[i],表示第i行的地址,即存放arr4[i][0]字符串的地址
5、  二维指针数组行地址相差 列数*4
6、指针数组arr[i][j]==*(&arr[i][j])表示字符串(arr[i][j])中的字符1arr[0][1])的地址
7、数组指针&arr[i][j]=*(arr+i)+j=arr[i]+j,表示字符串arr[i][j])的地址
注:指针数组的数组名计算的是数组中有多少个地址所占的字节,而不在是元素所占的地址
8、指针数组:sizeof(arr)计算的是所有地址所占字节,数组大小为几,则地址就有几个,
9、一维指针数组大小:sizeof(arr)/sizeof(arr[0]);sizeof(1[0])表示一
10、二维指针数组大小:sizeof(arr)/sizeof(arr[0][0]);sizeof(arr[0][0])为一个地址占4个字节


代码讲解:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()

 //一个汉字占4个字节
 char * ch="你好";
 char ch1[3][5]={"123","你h",{"anv"}};//前一个数3表式字符串个数,后一个数5表式每个字符串最大长度(字符个数-1),包含'
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值