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;

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

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

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

相关推荐
俩个逗号。。5 分钟前
Kotlin flow 详解
android·开发语言·kotlin
程序猿乐锅1 小时前
万字详解Single-flight(单飞模式)
java·开发语言·分布式·后端·学习·single-flight
AiNightVision1 小时前
无人机夜视模块如何选择?——从参数指标到系统集成的完整选型指南
人工智能·算法·计算机视觉·车载系统·无人机·视频·智能硬件
牧羊人.3332 小时前
卷积神经网络之VGG
人工智能·深度学习·神经网络·算法·cnn
揽星河..2 小时前
【C语言】指针
c语言·开发语言
小郎君6582 小时前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法
小小数媒成员3 小时前
UGUI原理(一)
开发语言·游戏·unity·游戏引擎
JJJennie7773 小时前
MAI Gateway私有化部署全攻略:大模型网关如何接入?附架构图
算法·gateway·ai网关·魔芋ai
速易达网络3 小时前
Three.js 动画入门教学:从场景搭建到流畅动效
开发语言·javascript·ecmascript
東隅已逝,桑榆非晚3 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法