C语言 数组
来源:互联网 发布:男士轻奢衣服品牌 知乎 编辑:程序博客网 时间:2024/06/07 09:18
一维数组
1.数组的创建
int arr[10];//int 为数组元素类型//arr为数组名//10为数组大小
注:创建数组时,[]中必须为常量,不能为变量2.数组的初始化
int arr1[10] = { 0 };//数组内容全部为0int arr2[10] = { 1, 2, 3 };//数组中有10个元素,对其中前三个元素进行初始化为1 2 3,其余全为0char arr3[3] = { 'a', 98, 'c' };//数组中元素为字符型分别为a b(98) cchar arr4[] = "abcd";//数组中元素为字符型分别为a b c d //其中有5个元素为 a b c d \0
3.数组的使用(1)数组是使用下标来访问的,下标从0开始
(2)数组的大小可以通过计算得到
int arr[10];int sz = sizeof(arr) / sizeof(arr[0]);
4.一维数组在内存中的存储
数组在内存中是连续存放的
5.一维数组的指针访问
#include <stdio.h>int main(){int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };printf("%p\n", arr);//首元素的地址return 0;}
#include <stdio.h>int main(){int arr[10] = { 0 };int i = 0;int *p_arr = arr;for (i = 0; i<sizeof(arr) / sizeof(arr[0]); ++i){printf("%p\n", arr + i);//数组名+整数的运算得到数组每个元素的地址}return 0;}
二维数组1.二维数组的创建及初始化
int arr[3][4] = { 1, 2, 3, 4 };//将数组前三个数进行初始化int arr[3][4] = { { 1, 2 }, { 4, 5 } };//将第一行和第二行的前两个元素进行初始化int arr[][4] = { { 2, 3 }, { 4, 5 } };//数组的创建,行可省,列不可胜 省
2.二维数组的存储二维数组在存储中也是连续存储的
有关数组的运算
//一维数组int a[] = { 1, 2, 3, 4 };printf("%d\n", sizeof(a)); //16 //sizeof(数组名) 表示数组的大小printf("%d\n", sizeof(a + 0)); //4 //地址printf("%d\n", sizeof(*a)); //4 //首元素地址printf("%d\n", sizeof(*&a)); //16 //&a表示数组的地址 则*&a表示整个数组printf("%d\n", sizeof(a + 1)); //4 //第二个元素的地址printf("%d\n", sizeof(a[1])); //4 //第二个元素的地址printf("%d\n", sizeof(&a)); //4 //数组的地址printf("%d\n", sizeof(&a + 1)); //4 //指向下一个数组 地址跳了16个字节printf("%d\n", sizeof(&a[0])); //4 //首元素地址printf("%d\n", sizeof(&a[0] + 1)); //4 //第二个元素的地址
//字符数组char arr[] = { 'a', 'b', 'c', 'd', 'e', 'f' };printf("%d\n", sizeof(arr)); //6printf("%d\n", sizeof(arr + 0)); //4 //地址printf("%d\n", sizeof(*arr)); //1 //arr表示地址 *arr表示元素printf("%d\n", sizeof(*&arr)); //6printf("%d\n", sizeof(arr[1])); //1 //第二个元素printf("%d\n", sizeof(&arr)); //4printf("%d\n", sizeof(&arr + 1)); //4printf("%d\n", sizeof(&arr[0] + 1));//4 //下一个元素地址printf("%d\n", strlen(arr)); //随机值 //strlen遇到\0才停止,因为没有,所以不会停printf("%d\n", strlen(arr + 0)); //随机值printf("%d\n", strlen(*arr)); //错误printf("%d\n", strlen(arr[1])); //错误printf("%d\n", strlen(&arr)); //随机值printf("%d\n", strlen(&arr + 1)); //随机值printf("%d\n", strlen(&arr[0] + 1));//随机值char *p = "abcdef";printf("%d\n", sizeof(p)); //4 //地址printf("%d\n", sizeof(p + 1)); //4 //地址printf("%d\n", sizeof(*p)); //1 //一个字符printf("%d\n", sizeof(p[0])); //1printf("%d\n", sizeof(&p)); //4 //地址printf("%d\n", sizeof(&p + 1)); //4 //地址printf("%d\n", sizeof(&p[0] + 1)); //4 //b的地址printf("%d\n", strlen(p)); //6printf("%d\n", strlen(p + 1)); //5printf("%d\n", strlen(*p)); //错误printf("%d\n", strlen(p[0])); //错误printf("%d\n", strlen(&p)); //随机值 //p的地址 与abcdef无关printf("%d\n", strlen(&p + 1)); //随机值printf("%d\n", strlen(&p[0] + 1)); //5
//二维数组int a[3][4] = { 0 }; printf("%d\n", sizeof(a)); //48printf("%d\n", sizeof(a[0][0])); //4 //第一个元素地址printf("%d\n", sizeof(a[0])); //16 //第一行大小printf("%d\n", sizeof(a[0] + 1));//4 //第一行第二个元素地址printf("%d\n", sizeof(a + 1)); //4printf("%d\n", sizeof(1)); //16 //第二行大小printf("%d\n", sizeof(&a[0] + 1));//4 //第二行地址printf("%d\n", sizeof(*a)); //16printf("%d\n", sizeof(a[3])); //16注:sizeof(数组名),这里的数组名表示整个数组 &数组名,这里的数组名表示整个数组
阅读全文
0 0
- C语言动态数组
- C语言的数组
- c语言 数组 指针
- c语言数组详解
- C语言字符数组
- C语言--指针,数组
- C语言变长数组
- C语言数组
- C语言数组
- 【C语言】数组--待续
- C语言数组
- C语言 数组拆分
- c语言 动态数组
- C语言数组
- C语言:数组
- c语言指针数组
- c 语言数组
- C语言变长数组
- DSS 代码分析【RTSP消息交互过程】
- Mysql番外篇_存储过程和存储函数
- Git之local操作学习
- Rust: flat_map、filter_map、for_each
- 浅谈反摩尔定律
- C语言 数组
- Qt5.7 + VS2015 环境搭建
- Doxygen安装与基本配置
- “Incremental Linker已停止工作”的处理方法
- Cad转换
- cronSchedule 配置说明
- 生活小记45
- Tensorflow flags = tf.app.flags 的使用
- HDFS_对象存储