c语言中srtlen(指针使用计算字符长度)、传值和传址调用

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

//#define NDEBUG

#include<string.h>//strlen求字符串函数

#include<assert.h>//assert断言函数

//指针的使⽤和传址调⽤

//指针使用,strlen的模拟实现

//size_t my_strlen(const char* p)//限制动*p

//{

// size_t cound = 0;

// assert(p != NULL);//判断p不是空地址,在调试时会更加保险稳重

// while (*p)

// {

// cound++;

// p++;

// }

// return cound;

//}

//int main()

//{

// char arr\[\] = "abcdef";

// size_t len = my_strlen(arr);

// printf("%zu\n", len);

// return 0;

//}

////传值调⽤

//void swap1(int a, int b)

//{

// int c = 0;

// c = a;

// a = b;

// b = c;

//}

//int main()

//{

// int a = 10;

// int b = 20;

// printf("交换前 a = %d,b = %d\n", a, b);

// swap1(a, b);

// printf("交换后 a = %d,b = %d\n", a, b);//输出发现并没有交换

// //总结,在进行传值调用时,形参只是实参的临时数值,形参会单独创建⼀份临时空间来接收实参,对形参的修改不影响实参。

// return 0;

//}

//传址调⽤

void swap2(int* const a, int* const b)

{

assert(*a != NULL);

assert(*b != NULL);

int c = 0;

c = *a;

*a = *b;

*b = c;

}

int main()

{

int a = 10;

int b = 20;

printf("交换前 a = %d,b = %d\n", a, b);

swap2(&a, &b);

printf("交换后 a = %d,b = %d\n", a, b);//输出后交换成功

return 0;

}//总结:传址调⽤,可以让函数和主调函数之间建⽴真正的联系,在函数内部可以修改主调函数中的变量;

//所以未来函数中只是需要主调函数中的变量值来实现计算(如加减法运算)就可以采⽤传值调⽤。

//如果函数内部要修改主调函数中的变量的值,就需要传址调⽤。

相关推荐
碧海银沙音频科技研究院1 小时前
炬芯ATS3089X手表的HFP通话不自动路由到设备BT的问题解决
网络·人工智能·嵌入式硬件·算法
你说我胖?1 小时前
Visual Studio编辑生成exe
ide·visual studio
Joy T3 小时前
Agent 确定性上下文设计:从 Prompt 参数注入到能力分层
java·开发语言·微服务·架构·prompt·agent context
专注仿真6 小时前
引擎扩展性与集成设计深度剖析:从 14 个扩展点到 DIS→HLA 演进之路
开发语言·算法·仿真引擎·推演引擎
码爸6 小时前
支持向量机介绍与示例
算法·机器学习·支持向量机
怕浪猫6 小时前
2028编程圈很火的10个Skills
算法·面试·github
Best-Wishes6 小时前
科来网络分析系统(技术交流版)使用说明书
开发语言·junit·php
代码不停7 小时前
自动化测试(java)
java·开发语言·selenium·自动化
鬼手点金9 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github