C语言相关(二)

C语言入门三

数组

1 什么是数组
数组表示相同类型的数据集合,是聚合类型
2、数组存放在哪个位置??
方法内
3、数组什么时候确定大小?
编译时
4、什么时候给数组分配内存??
程序运行时
5、最多分配多大的内存?
栈的大小 1M-2M
6 定义数组

int arr[5] = {1,2,3,4,5}//5为数组长度

数组初始化只有一次机会即在定义数组的时候
功能函数中传参数若为数组,可使用指针

void Show(int *p)
{
}
int main()
{
	int arr[5] = {1,2,3,4,5};//20
	Show(arr);//地址 数组首元素的地址
	}

7、&arr+1;//数组最后一个元素的后面
访问数组当中元素的方法:
可以通过下标去访问 //arr[1]
通过指针的形式访问

nt *p = arr;
int a = *(p+3);//访问

8 数组的地址

int arr[5] = {10,2,3,4,5};
    printf("%d\n",&arr);,//首地址
	printf("%d\n",&arr+1);//整个数组+1的地址
	printf("%d\n",&arr[0]);//arr[0]的地址
	printf("%d\n",&arr[4]);//4号下标的地址
	printf("%d\n",arr);//首地址
	printf("%d",arr[2]);//2号下标的值

在这里插入图片描述
9 求数组的长度

int len = sizeof(arr)/sizeof(arr[0]);

10,字符数组

char crr[5] = {'a','b','c','d','e'};//字符数组
	char crr2[5] = "abcd";//字符数组 默认会加\0
	char crr3[] = "abcdef";//字符数组 默认会加\0
	char crr4[10] = "abcdef";
	printf("%s\n",crr);
	printf("%s\n",crr2);
	printf("%s\n",crr3);
	printf("%s\n",crr4);

在这里插入图片描述
字符串使用%s进行打印
%s:遇到\0停止
其中printf("%s\n",crr) 因为没有\0来停止 所以打印结果如上图

其他知识

1 sizeof与strlen
sizeof:
关键字,用来求字节长度 不会计算 \0
注意,用sizeof求指针字节数时 全为4
strlen:
库函数需头文件#include<string.h>
用来求字符串的长度,但是不包括\0

char str[100] = "abcdef";
	char *str2 = "abcdef";
	char str3[] = "abcdef";
	char str4[100] = "abcdef\0xyz";
	char *str5 = "abcdef\0xyz";
	char str6[] = "abcdef\0xyz";
	char str7[] = "abcdef\n\0";
	char *str8 = "abcdef\n\0";
	printf("%d,%d\n",sizeof(str),strlen(str));
	printf("%d,%d\n",sizeof(str2),strlen(str2));
	printf("%d,%d\n",sizeof(str3),strlen(str3));
	printf("%d,%d\n",sizeof(str4),strlen(str4));
	printf("%d,%d\n",sizeof(str5),strlen(str5));
	printf("%d,%d\n",sizeof(str6),strlen(str6));
	printf("%d,%d\n",sizeof(str7),strlen(str7));
	printf("%d,%d\n",sizeof(str8),strlen(str8));
	printf("%d,%d\n",sizeof(str3),strlen(str3));

在这里插入图片描述

2,断言 assert
断言是一个宏 需要#include<assert.h>头文件
适用于DEBUG版本
void assert( int expression );
果expression的值为假(即为0),那么它先打印一条出错信息,然后终止程序运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值