Linux基本命令,vi编译器的使用,简单的编程步骤,程序语言,gcc编译器编译过程,进制转换相关知识可以查看文档http://t.csdnimg.cn/CmqhC
数值表示,词法符号,变量,常量相关知识可以查看文档http://t.csdnimg.cn/jJIe2
运算符和输表达式,输入输出相关知识可以查看文档http://t.csdnimg.cn/FJe89
控制语句,if-else,switch-case,for,while,do-while,循环控制语句相关知识可以产看文档http://t.csdnimg.cn/zskY3
目录
数组
数组(Array)是有序元素序列,若将有限个类型相同的变量的集合命名,那么这个名称为数组名。重点必须是类型相同和连续的变量集合
数组的基本用法:
1.定义格式
存储类型 数据类型 数组名[元素的个数]; 例如:(auto) int a[5];
数组名:代表数组的首地址,也就是第一个元素的地址。a是地址常量,不能为左值,不能被赋值。
数组定义方法
(1)数组名定义规则跟变量名相同,遵循标识符定义规则
(2)数组名后使用方括号括起来的常量表达式表示元素个数。
(3)常量表达式中可以包含常量和符号常量(宏定义),不能包含变量。
2.访问元素
数组名[下标];
注意:数组元素下标从0开始
访问第一个元素:a[0];
访问第n个元素:a[n-1];
特点:
(1)数据元素的数据类型相同
(2)内存连续
注意:
1). 数组的数据类型就是数据元素的数据类型
2). 数组名要符合标识符的命名规则
3). 在同一个函数中,数组名不要与变量名相同
4). 下标从0开始的,到n-1结束
一维数组:
只有一个下标的数组
定义格式:存储类型 数据类型 数组名[元素个数];
访问元素:数组名[下标]; 下标从0开始
数组名:数组首地址,也就是第一个元素的地址。
初始化
1.全部初始化
例如:int a[5]={1,2,3,4,5};
2.部分初始化
例如:int a[5]={1,2};
未初始化的元素值自动为0。
3.不初始化
例如:int a[5];
a[0]=1;
未初始化需要对单个元素进行赋值,否则局部变量为随机值。
定义空数组
1. int a[5] = {0,0,0,0,0};
2.int a[5] = {0};
3.int a[5] = { };
数组引用
1.先定义后引用
2.每次只能引用一个数组元素a[i], 如果想引用所有元素可以循环遍历
3.打印数组元素地址用%p格式
数组大小
1.元素个数*数据类型大小
2.使用sizeof:sizeof(数组名)
数组元素个数=sizeof(数组名)/元素大小;
例题:计算斐波那契数列前15项并逆序输出:
#include <stdio.h>
int main()
{
int a[15] = {1, 1};
for (int i = 2; i < 15; i++)
{
a[i] = a[i - 2] + a[i - 1];
}
for (int i = 14; i >= 0; i--)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
清零函数:
1.bzero( )函数
void bzero(void *s, size_t n);
功能:将内存空间设置为0
参数:s: 要清空的空间首地址
n: 字节大小
返回值:无
2.memset( )函数
void *memset(void *s, int c, size_t n);
功能:将指定内存空间内容设置为0
参数:s:指定内存首地址
c:要设置的数,一般为0
n:要设置的内存大小
返回值:无
数组内存分配
int a[5];
a是数组名,也是数组的首地址也就是第一个元素的地址,即&a[0]。
a+1 是数组第二个元素的地址,即&a[1]。
通过地址间接取地址表示空间的内容可以通过
字符数组:
类型为字符的数组,也就是数组中每个元素是字符型。可以表示字符串。
表示形式
(1)单个字符表示:
char s1[] = { 'h', 'e', 'l', 'l', 'o'};
(2)用字符串表示,结尾会自动添加上'\0'。
char s5[6] ="hello"; //sizeof(s5) = 6
如果定义时不赋值则不能省略元素个数
输入
1.利用scanf输入
char s[32] = {};
scanf("%[^\n]", s); //除了\n以外所有字符都可以输入到s地址下空间内保存,遇到\n就结束
输入字符串会在后面加上'\0'
2.利用for循环遍历输入
char s[6] = " ";
for (int i = 0; i < 6; i++){
scanf("%c", &s[i]);
}
3.利用gets()函数输入
char *gets(char *s);
功能:从终端获取字符串输入
参数s:目标字符串首地址
返回值:目标字符串首地址
注意:没有数组越界检查,使用时会报警告,可以忽略
输出
1.利用printf输出
char s[6]="hello";
printf("%s\n",s);
2.利用for循环遍历输出
char s[6] = "hello";
for (int i = 0; i < 32; i++){
printf("%c", s[i]);
}
3.利用puts()函数输出
int puts(const char *s)
功能:向终端打印字符串
参数:打印的字符串首地址
返回值:字符串长度
计算字符串长度
1.利用循环计算
char s[6] = "hello";
int i = 0;
while (s[i] != '\0')
{
i++;
}
printf("%d\n", i);
2.利用strlen()函数计算
#include <string.h>
size_t strlen(const char *s);
功能:计算字符串长度
参数:字符串的首地址
返回值:返回字符串实际长度,不包括'\0'在内。
3.sizeof和strlen的区别
1.sizeof是关键字,strlen是函数
2.sizeof是计算数据所占空间大小,strlen计算字符串的实际长度
3.sizeof计算包括\0,strlen计算不包括\0;计算字符串长度时,sizeof比strlen大
标签:2024.7,19,元素,地址,学习,int,数组名,数组,字符串 From: https://blog.csdn.net/qq_60450758/article/details/140545364