数组的基本使用

数组的定义格式:

类型 数组名[元素个数];

int ages[5] = {19, 29, 28, 27, 26};

数组的注意事项

存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的)

数组名的作用,查看元素地址

数组越界的注意

使用注意

正确写法

> int ages[5] = {10 , 11, 12, 67, 56};

> int ages[5] = {10, 11};

> int ages[5] = {[3] = 10, [4] = 11};

> int ages[] = {10, 11, 14};

> int ages['A'-50] = {10, 11, 12, 14, 16};

> /*

int count = 5;

int ages[count];

ages[0] = 10;

ages[1] = 11;

ages[2] = 18;

*/

错误写法

//第一种情况~没有初始化数组个数,并不知道需要分配多少内存空间

int ages[];

//第二种情况只能在定义数组的同时进行初始化

int ages[5];

ages = {10, 11, 12, 14};

//第三种情况 如果想再定义数组的同时进行初始化,数组元素个数必须是常量,或者不写

int count = 5;

int ages[count] = {10, 11, 12};

计算数组元素的个数

int count = sizeof(ages)/sizeof(int);

数组和函数

// 数组作为函数参数,可以省略元素个数

// 数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组

void change(int array[])

{

array[0] = 100;

}

//基本数据作为函数参数是值传递

void change2(int n)

{

n = 100;

}

int main()

{

int ages[6] = {10, 11, 10, 11, 10, 11};

change(ages);

change2(ages[0]);

return 0;

}

获取数组中的最大值

int maxOfArray(int array[], int length)

{

// 数组当做函数参数传递时,会当做指针变量来使用,指针变量在64bit编译器环境下,占据8个字节

//int size = sizeof(array);

//printf("array=%d\n", size); 得到的是8

// 1.定义一个变量存储最大值(默认就是首元素)

int max = array[0];

// 2.遍历所有元素,找出最大值

for (int i = 1; i

{

// 如果当前元素大于max,就用当前元素覆盖max

if (array[i] > max)

{

max = array[i];

}

}

return max;

}

二维数组

什么是二维数组?

一个数组能表示一个班人的年龄,如果想表示很多班呢?

int ages[3][10]; 三个班,每个班10个人

相当于3行10列

相当于装着3个一维数组

二维数组是一个特殊的一维数组:它的元素是一维数组。例如int a[2][3]可以看作由一维数组a[0]和一维数组a[1]组成,这两个一维数组都包含了3个int类型的元素

int main()

{

/*

1 浅蓝色

2 深蓝色

3 黄色

4 红色

-1 没有

*/

int cubes[5][5] = {

{1, -1, -1, -1, -1},

{1, 1, -1, 2, -1},

{4, 1, 2, 2, 2},

{4, 3, 3, 3, 3},

{4, 3, 3, 3, 3}

};

return 0;

}

字符串

char name[] = "jackChan";

char name2[8] = {'i', 't', '\0'};

字符串是以 \0为标志的

/*

\0的作用

1.字符串结束的标记

2.printf("%s", name2);

会从name2这个地址开始输出字符,直到遇到\0为止

因为name2只是普通的字符数组,(没有指定分配多少内存空间,就会以字符的个数进行分配存储空间,由于不包含\0,所以是一个普通的字符数组,而printf中%s是字符串,所以会先找到name2的内存地址,"注意:分配内存的时候寻址是先大后小,所以name[]的内存地址比name2的内存地址大",没有\0,会继续向下找到name[]中,直到遇到\0才结束)

*/

int main()

{

char name[] = "itc\0ast";

char name2[] = {'o', 'k'};

printf("%s\n", name2); //输出的结果是okitc

// printf("%s\n", &name2[1]);

return 0;

}

strlen函数

/*

strlen 函数:计算字符串的长度

1 计算的是字符数,并不是字数,一个汉字算作3个字符

2 计算的字符不包含\0

3 从某个地址开始数 字符的个数,直到遇到\0为止

4 strlen 函数声明在string.h中

*/

#include

#include

int main()

{

int size = strlen("哈haha");

printf("%d\n", size);

char name[] = "jack";

printf("%s\n", name); // jack

printf("%c\n", name[3]); // k

return 0;

}

字符串数组

#include

int main()

{

char name[] = "jack";

char name1[] = "rose";

char name2[] = "jim";

char name3[] = "jake";

char names[2][10]= {"jack", "rose"};

//printf("%s\n", names[0]);

//printf("%c\n", names[0][3]);

char names2[2][10] =

{

{'j', 'a', 'c', 'k', '\0'},

{'r', 'o', 's', 't', '\0'}

};

return 0;

}

c语言字符数组不写,C语言数组相关推荐

  1. 单片机c语言字符型数据类型,单片机C语言数据类型

    本资料适合单片机C语言的初学者,可当做参考使用.牛B的人就不要看了 单片机C语言的数据类型 在最小系统的介绍中,我们已经大致了解了单片机的程序结构,下面我们来系统介绍一下. 先来简单说说C语言的标识符 ...

  2. c语言字符初始化怎么表示,C语言初始化字符串 怎么进行字符串赋值?C语言

    C语言数组字符串初始化问题 C语言中,初始化操作就是在定义变量的时候,对变量进行赋值,即称为变量的初始化.对于字符变量也是一样的. 举例如下: char ch='a'; // 定义一个字符变量,变量名 ...

  3. c语言字符型输入格式化,c语言之字符串和格式化输入输出

    字符串和格式化输入输出 #include #include #define DENSITY 62.4 int main(void) { float weight, volume; int size, ...

  4. c语言字符函数isalpha,总结C语言字符检测函数:isalnum、isalpha...

    前言:最近一直在刷leetcode的题,用到isalnum函数,用man手册查找了一下,总共有13个相关函数如下: #include int isalnum(int c); int isalpha(i ...

  5. c语言字符型常量计算,c语言字符型常量和变量.doc

    c语言字符型常量和变量 谅娄协逞妥唐氦错赵夏教灶技竞白量菲荚锚坤缆咕囤厢失随着牲淋我雾谋蹬格椭金佃贮官梳冕萨鱼疥卫答襟回咬逢砾摘宛嵌拎宛拽抱钢簧彩城挛霉门窗莉辉托罚椽建呛液汛炕午望延晒纠挺谱阔衔解抗贱 ...

  6. c语言字符型数据是,C语言字符型数据.doc

    C语言字符型数据 2.5.1字符常量字符常量是指用一对单引号括起来的一个字符.如'a','9','!'.字符常量中的单引号只起定界作用并不表示字符本身.单引号中的字符不能是单引号(')和反斜杠(\), ...

  7. 大一c语言实践报告怎么写,c语言实践报告范文

    只有努力付诸实践,才有真知灼见.下面是学习啦为大家带来的c语言实践报告范文,希望可以帮助大家. c语言实践报告范文1: 在科技高速发展的今天,计算机互联网在人们之中的作用越来越突出.而c语言作为一种计 ...

  8. ACMNO.27 Python的两行代码解决 C语言-字符逆序 写一函数。使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。 输入 一行字符 输出 逆序后的字符串

    题目描述 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串. 输入 一行字符 输出 逆序后的字符串 样例输入 123456abcdef 样例输出 fedcba654321 来源 ...

  9. c语言字符指针初始化赋值,C语言_指针变量的赋值与运算,很详细详解

    指针变量的赋值 指针变量同普通变量一样,使用之前不仅要定义说明, 而且必须赋予具体的值.未经赋值的指针变量不能使用, 否则将造成系统混乱,甚至死机.指针变量的赋值只能赋予地址, 决不能赋予任何其它数据 ...

最新文章

  1. 赵雅智_android多线程下载带进度条
  2. 机器学习算法Python实现:gensim里的similarities文本相似度计算
  3. P5470-[NOI2019]序列【模拟费用流】
  4. git提交过滤package.json_eclipse配置git环境以及使用git提交本地仓和远程仓
  5. boot druid 长时间不连接 异常_Spring Boot学习:如何使用Druid数据源
  6. 路径中“./”、“../”、“/”代表的含义
  7. HTML内置css改变文字效果,CSS+HTML文字效果
  8. SharePoint Backup
  9. 统计学习导论(ISLR)第五章bootstrap和交叉验证课后习题
  10. oracle数据库驱动下载(ojdbc)
  11. 黑马python5_黑马Python5.0+人工智能课程升级5.0版本!【完整无秘】
  12. 什么是WHQL认证?
  13. C++入门经典 Ivor Horton 第3版
  14. tensorflow官网
  15. ASP.NET Web——GridView完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能
  16. 腾讯万亿级 Elasticsearch
  17. 2018 ACM-ICPC, Syrian Collegiate Programming Contest I. Rise of the Robots 最小圆覆盖 模板
  18. 多边形颜色渐变填充C语言,vb6:用渐变填充多边形
  19. 百度人脸识别测试环境配置教程
  20. 【Ruby on Rails全栈课程】4.1 点赞功能

热门文章

  1. k近邻算法(KNN)-分类算法
  2. 配置VLAN以及配置VTP;
  3. lcd液晶字体_等离子电视与液晶电视的区别
  4. Linux常用指令自己备用
  5. 基于Wi-Fi的室内定位在美团总部的实践和应用(上)
  6. 2019 阿里Java 4轮面试题,含必考题答案参考!
  7. 关于PaddleNLP如何加载训练好的模型进行NER
  8. 从GAN到WGAN到LipschitzGA
  9. 可信知识实证在UGC时代情报应用中的思考与探索
  10. Oracle中如何查询一个表的所有字段名和数据类型