C语言assert断言详解指针(3)

各位少年,大家好,我是博主那一脸阳光,今天分享assert法官的断言,指针宝箱的使用。
前言:如果你在计算机的世界中触犯了语法法规,那么编译器就要上线了,就会出现报错。然而想想我们在现实中设计到经济纠纷什么的,一些自身外部的物资这时候编译器警察就管不了了,没有权限,这时候就需要一些内部法官来管理了,今天我们介绍一个C语言中的法官assert,它是C语言中的库函数。

assert的法官的介绍和宣判

assert叫做“断言”什么是断言“呢?请看下面代码示例。

int a=10;
int b=20;
assert(a==b)//如果不为真,就报错

在这里插入图片描述
大家看到了吧,assert非常的霸道,通常assert在指针的时候常用到,接下来介绍一下函数原型和函数参数。

#include <assert.h>
void assert( int expression );

如果你想要使用这个函数的话,你就要使用它对应的头文件assert.h,返回返回值是void,函数的参数是整形的表达式,如果表达式结果为执行),如果为程序终止)。
assert通常用来测试代码测试运行和指针的运算往往比if语句更加简洁方便。
如果最后我们测试成功以后,该怎么屏蔽assert呢?很显然这里就需要一个了,我们在头文件处加上#define NDEBUG这样就会禁用所有assert语句了。一般我们在Debug版本上的使用,但是Release版本中选择禁用assert版本中已经优化掉了(在VS是这样的),这样在Debug版本中大大节省的时间。

指针的使用和传址调用

函数调用分为两种(传址调用)(——————————(传值调用
传值调用,大家可以理解为传递的值。

#include<stdio.h>
int Add(int x, int y)
{
   
	return x + y;
}
int main()
{
   
	int a = 10;
	int b = 20;
	int ret = Add(a, b);
	printf("%d\n", ret);
	return 0;
}

当这段代码调用add函数的时候,add函数调用,传值调用,传入函数的时候,传入的是a和b的变量。

传址调用是什么呢?

传址调用:比方说有两个值,传址就是函数在调用的时候,传递的是这两个值的地址。传值调用是就是传入的两个值,就像一个展览的复品一样,一个副本。

通过传址调用模拟实现strlen函数
#include<stdio.h>
size_t my_strlen(const char *s)
{
   
	int count = 0;
	while (*s != '\0')
	{
   
		count++;
		s++;
	}
	return count;
}
int main()
{
   
	char arr[] = "abcdef";
	size_t len = my_strlen(arr);
	printf("%zd\n", len);
		return 0;
}

size_t原型是unsigned int无符号整形,意思是说不能有负号,只能有正数。大家这里理解就可以了。
传址调用和传值调用。
那很显然大家就疑惑了?之前我博客有一篇不需要传址调用模拟实现strlen函数的例子,

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小敖探花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值