浅谈数组
来源:互联网 发布:成都家电维修软件 编辑:程序博客网 时间:2024/05/17 02:03
俗话说:”不积跬步,无以至千里。“做什么事都应该一步一个脚印,取得进步,今天我来分享一些数组相关的概念知识:
1.一维数组的创建和初始化
2.一维数组的使用3.一维数组的存储
4.一维数组的指针访问
5.二维数组的创建和初始化
6.二维数组的使用
7.二维数组的存储
8.二维数组的指针访问
1.一维数组的创建和初始化:
1.1创建:
type_t arr_name [const-n];
//type_t 是指数组的元素类型
//const_t 是一个常量表达式,用来指定数组的大小
注:数组创建,[ ]中要给一个常量,不能是变量
举例: int arr1[10]; //可以
int count = 10;
int arr2[count]; //不可以
1.2 初始化:数组的初始化,是指在创建数组的同时给数组的内容一些合理初始值。
int arr1[10] = {1,2,3,4};
int arr2[] = {1,2,3,4};
int arr3[4] = {1,2,3,4};'
int arr4[3] = {'a',98,'c'.};
char arr5[] = {"abcdef"}; //注意'\0'的存在
char arr6[] = {'a','b','c'};
数组在创建的时候如果不想指定数组的确定的大小就得初始化。
2.一维数组的使用:
1.数组时使用下标来访问,且下标从0开始:
//.......
int arr[10] = {0};
int i = 0;
for(i = 0; i < 10; i++)
{
arr[i] = i;
}
2.数组的大小可以通过计算得到:
int arr[10];
int sz = sizeof(arr)/sizeof(arr[0]);
3.一维数组的存储:在vs2010环境下输入以下代码:
#include <stdio.h>
int main()
{
int arr[10] = {0};
int i = 0;
for(i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)
{
printf("&arr[%d] = %p\n",i,&arr[i]);
}
return 0;
}
运行结果是:
可见:数组在内存中连续存放。
4.一维数组的指针访问:
//...
int arr[10] = {0,1,2,3,4,5,6,7,8,9};
printf("%p\n",arr);
printf("%d\n",*arr);
所以,数组的数组名就是数组首元素的地址。
通过数组名+整数的运算,可以获取到数组的每个元素的地址。
int arr[10] = {0};
int i = 0;
int* p = arr;
for(i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)
{
*(p+i) = i; //使用指针来访问数组
}
5.二维数组的创建和初始化
5.1创建
int arr[3][4];
char arr[3][4];
double arr[3][4];
5.2初始化
int arr[3][4] = {1,2,3,4};
int arr[3][4] = {{1,2},{3,4}};
int arr[][4] = {{1,2},{3,4}};
6.二维数组的使用
也通过下标的方式:
//......
int main(){
int arr[3][4] = {0};
int i = 0;
for(i = 0; i < 3; i++)
{
int j = 0;
for(j = 0; j<4; j++)
{
arr[i][j] = i*4+j;
}
}
for(i = 0; i < 3; i++)
{
int j = 0;
for(j = 0; j<4; j++)
{
printf("%d ",arr[i][j]);
}
}
return 0 ;
}
7.二维数组在内存中的存储:在vs2010环境下运行一下代码:
int main()
{
int arr[3][4] = {0};
int i = 0;
for(i = 0; i < 3; i++)
{
int j = 0;
for(j = 0; j<4; j++)
{
printf("&arr[%d][%d] = %p\n",i,j,&arr[i][j]);
}
}
return 0;
}
运行结果为:
可见:二维数组在内存中也是连续存储。
8.二维数组的指针访问
int main()
{
int arr[3][4] = {0};
int* p = &arr[0][0];
int i = 0;
for(i = 0; i < 3*4; i++)
{
p[i] = i;
}
for(i = 0; i < 3; i++)
{
int j = 0;
for(j = 0; j<4; j++)
{
printf("%d ",arr[i][j]);
}
}
return 0;
}
运行结果为:0到11
- 数组浅谈
- 浅谈数组
- 浅谈数组
- 浅谈C#中的数组
- 浅谈C#中的数组
- 浅谈C++数组
- 浅谈java中的数组
- 浅谈数组和指针
- 浅谈数组和指针
- 浅谈 数组 和指针
- 浅谈数组和指针
- 浅谈java数组
- c#数组浅谈
- yy浅谈后缀数组
- 浅谈数组与指针
- 浅谈next数组
- 浅谈JAVA二维数组
- 浅谈后缀数组
- 消息队列
- XML解析
- Qt 键盘事件与消息过滤器
- Java异常处理
- MySQL命令行登陆,远程登陆MySQL
- 浅谈数组
- Viewpager+XListView+Internet
- Http协议详解及浏览器里含义,jmeter、postman工具对应内容
- 安卓设置热点ssid和密码
- sql server中根据地图经纬度算距离
- hdu6038-思维-2017多校(2)-Function
- 【HDU】6045
- bzoj4080 Wf2014 Sensor Network 随机化
- 多校赛2017 R2