当前位置: 首页 > news >正文

六安网站建设优化郑州百度关键词seo

六安网站建设优化,郑州百度关键词seo,登录app,百度怎么做开锁网站个人主页:PingdiGuo_guo 收录专栏#xff1a;C干货专栏 文章目录 前言 1.字符指针 1.1字符指针的概念 1.2字符指针的用处 1.3字符指针的操作 1.3.1定义 1.3.2初始化 1.4字符指针使用注意事项 2.数组参数#xff0c;指针参数 2.1数组参数 2.1.1数组参数的概念 2.1… 个人主页:PingdiGuo_guo 收录专栏C干货专栏 文章目录 前言 1.字符指针 1.1字符指针的概念 1.2字符指针的用处 1.3字符指针的操作 1.3.1定义 1.3.2初始化 1.4字符指针使用注意事项 2.数组参数指针参数 2.1数组参数 2.1.1数组参数的概念 2.1.2数组参数的作用 2.1.3一维数组的传参 2.1.4二维数组的传参 2.2指针参数 2.2.1指针参数的概念 2.2.2指针参数的作用 2.2.3一级指针与二级指针 2.2.3一级指针的传参 2.2.4二级指针的传参 2.3练习 2.3.1数组参数的练习题目 2.3.2指针参数的练习题目 总结 前言 相关文章C指针二、C指针一 本篇博客是介绍字符指针数组参数与指针参数的。 1.字符指针 1.1字符指针的概念 字符指针是指向字符数组或字符串的指针。在C语言中字符数组和字符串都是以字符指针的形式来操作和访问的。字符指针指向字符数组或字符串的第一个字符的地址通过指针可以访问数组或字符串中的各个字符。 1.2字符指针的用处 字符指针有很多用途以下是一些常见的用途 1. C字符串操作字符指针可以用来处理C字符串包括字符串的拷贝、连接、比较等操作。由于C字符串以null字符结尾我们可以使用字符指针来访问和操作字符串的每个字符。 2. 字符串数组访问字符指针可以用于访问字符串数组中的每个字符串。通过递增指针的方式可以依次访问字符串数组中的每个元素。 3. 动态内存分配字符指针可以用于动态分配内存即在程序运行时根据需要分配内存空间。通过使用new运算符可以分配一段连续的内存并返回第一个元素的指针。 4. 字符指针数组字符指针可以用于创建指向字符的指针数组。这在处理多个字符串时非常有用每个指针可以指向一个独立的字符串。 5. 文件操作字符指针可以用于进行文件的读取和写入操作。通过指针的方式我们可以逐字符或逐行读取文件内容并将指针移动到文件的特定位置。 这些只是字符指针的一些常见用途实际上字符指针在C和C中有广泛的应用可以用于字符串处理、动态内存管理、文件操作等多种场景。 1.3字符指针的操作 1.3.1定义 字符指针需要关键字char*来定义其他部分与普通指针的定义相同。如下 char* ptr; 这样我们就定义了一个字符指针。 1.3.2初始化 字符指针初始化有两种方式 1.定义一个字符并为其赋值然后用来获取这个字符变量的地址。代码如下 #include bits/stdc.h using namespace std; int main() {char ch w;char* pc ch;cout*pcendl;return 0; } 到这里可能有些同学会疑惑*pc里不是存储了变量ch的地址了么为啥输出的是ch里的值呢 这里我们要注意在代码中*pc是一个解引用操作符它用于获取指针pc所指向的内存地址上存储的值。在这种情况下*pc表示获取指针pc所指向的内存地址上存储的字符。所以cout*pc输出的是ch里的值即字符w。 那可能有些同学又要问了PingdiGuo_guo那啥情况输出的是地址呢 注意当我们直接输出指针变量本身时会输出该指针变量所存储的地址而不是地址上的值。如果要输出指针变量所指向的地址上的值需要使用解引用操作符*。 以下是一个例子 #include iostream using namespace std;int main() {int x 10;int* ptr x;cout ptr endl;   // 输出指针变量ptr的值即x的地址cout *ptr endl;  // 输出指针ptr所指向的地址上存储的值即x的值return 0; } 上述代码输出结果 第一行输出的是指针变量ptr存储的地址第二行输出的是指针ptr所指向的地址上存储的值。 2.我们直接把一个字符串赋值给指针变量。如下 ​#include iostream using namespace std; int main() {const char* ps hello.;coutpsendl;return 0; }​ 大家看一看运行上述代码*ps里储存的是什么呢 有同学觉得储存的的应该是字符串hello.的地址实际上储存的是字符串hello.的首字符也就是字符h的地址。 1.4字符指针使用注意事项 字符指针使用注意事项 1. 注意字符串的结束符C语言中的字符串以\0作为结束符因此在使用字符指针操作字符串时需要确保字符串末尾有一个\0字符否则可能导致未定义的行为。 2. 避免修改字符串常量字符串常量是只读的因此尝试修改字符串常量的内容会导致编译错误或者运行时错误。如果需要修改字符串应该使用可修改的字符数组或者动态分配内存的字符指针。 3. 空指针检查在使用字符指针之前应该进行空指针检查以避免对空指针进行操作导致程序崩溃或者出现未定义的行为。 4. 确保指针指向有效的内存区域在使用字符指针操作字符串时应确保指针指向的内存区域包含了足够的空间以存储字符串的内容并且字符串的结束符\0也需要在指针指向的内存区域内。 5. 避免指针越界访问在使用字符指针操作字符串时应避免指针越界访问即超过了字符串的有效范围进行访问这可能导致程序崩溃或者出现未定义的行为。 6. 避免指针悬挂在使用字符指针时需要确保指针指向的内存区域有效并且在指针不再使用时及时释放或者置为NULL以避免产生悬挂指针或者内存泄漏的问题。 7. 注意指针运算的规则字符指针支持指针运算例如指针加法和指针减法但要注意指针运算时遵循指针的类型大小以避免指针运算越界或者计算错误。 8. 使用函数库提供的字符串操作函数C语言提供了一系列函数库来操作字符串例如strcpy、strlen、strcat等使用这些函数能够更方便、安全地操作字符串同时避免常见的错误。 2.数组参数指针参数 2.1数组参数 2.1.1数组参数的概念 数组参数是指在函数的参数列表中声明一个数组作为参数。当函数被调用时实际传递给该参数的是数组的地址而不是整个数组本身。通过使用数组参数可以将数组的内容传递给函数并在函数中对数组进行操作或者返回相应的结果。 2.1.2数组参数的作用 数组参数在函数中的作用主要包括以下几点 1. 传递数组数据通过数组参数可以将数组的数据传递给函数进行处理。函数可以读取、修改数组的元素执行各种操作。 2. 减少内存开销使用数组参数可以避免将整个数组的副本传递给函数而是只传递数组的地址或首元素地址。这样可以减少内存开销和数据复制次数。 3. 返回数组数据函数也可以通过数组参数返回数据。在函数内部修改数组元素后函数外部的数组也会被修改。 4. 可变长度数组在函数参数中使用可变长度数组可以根据需要传递不同大小的数组。这样可以编写更加灵活的函数适应不同规模的数据。 5. 简化代码通过使用数组参数可以将对数组的一系列操作封装在函数中提高代码的可读性和可维护性。 总的来说数组参数可以使函数更加灵活、高效地处理数组数据提高代码的可复用性和可维护性。它是C语言中非常重要的函数参数类型之一。 2.1.3一维数组的传参 void is(int a[]) { } void id(int a[100]) { } void ih(int* a[10]) { } ​ void ij(int* a) { }​ void ig(int** a) { } 注上述这些格式都可以运行。 2.1.4二维数组的传参 二维数组的传参基本形式与一维数组类似只是在声明参数时需要指明数组的行数和列数。 // 形参为二维数组指定列数的方式 void functionName(dataType arrayName[][columns], int rows) {// 函数体// 可以通过双重循环访问和修改数组元素 } // 形参为二维数组指定指针的方式 void functionName(dataType *arrayName[], int rows, int columns) {// 函数体// 可以通过双重循环访问和修改数组元素 } // 形参为二维数组指定指向指针的指针的方式 void functionName(dataType **arrayName, int rows, int columns) {// 函数体// 可以通过双重循环访问和修改数组元素 }在上述代码中dataType是数组中元素的数据类型arrayName是二维数组的名称rows是数组的行数columns是数组的列数。 在函数参数列表中我们可以使用dataType arrayName[][columns]或者dataType *arrayName[]或dataType **arrayName来声明一个二维数组作为参数。 在函数体内部可以使用双重循环来访问和修改二维数组的元素。 2.2指针参数 2.2.1指针参数的概念 指针参数是指函数中的参数被声明为指针类型的参数。指针参数允许函数通过引用传递内存地址从而能够修改原始数据的值。 2.2.2指针参数的作用 指针参数的作用有以下几个方面 1. 传递大型数据结构通过将指针作为参数传递给函数可以避免复制整个数据结构。这对于大型结构体或数组来说尤为重要可以提高程序性能。 2. 在函数内部修改变量的值通过传递指向变量的指针作为参数函数可以直接修改变量的值。这对于需要在函数中修改全局变量或者需要通过函数返回多个值的情况非常有用。 3. 动态内存分配通过指针参数可以在函数内部对动态分配的内存进行操作。例如在函数中动态创建一个数组并通过指针参数返回数组的地址。 4. 传递数组通过将数组的首地址作为指针参数传递给函数可以在函数内部操作数组中的元素。 需要注意的是使用指针参数需要谨慎避免出现空指针或者越界访问等问题。在使用指针参数时需要确保传递正确的地址并在函数内部对指针进行适当的处理和保护。 总之指针参数在函数传参中具有重要作用可以通过引用传递内存地址实现对变量和数据的修改和操作。 2.2.3一级指针与二级指针 一级指针和二级指针是指针的不同级别。 一级指针Level 1 Pointer是指一个指针变量如int*指向一个存储地址该地址保存了一个值或者另一个指针。通过一级指针可以直接访问到被指向的内存地址中的值。 二级指针Level 2 Pointer也被称为指向指针的指针是指一个指针变量如int**存储了一个指针的地址。通过二级指针可以间接地访问到被指向的内存地址中的值。 二级指针常用于需要对一级指针进行修改的情况例如在函数中传入一个指针的指针以便修改指针的值。同时你也可以定义三级指针、四级指针以及更高级别的指针但在实际开发中很少用到。 2.2.3一级指针的传参 一级指针的传参是通过将指针作为函数的参数传递给函数。 在函数中可以通过一级指针来访问和修改指针所指向的值。 下面是一级指针传参的基本形式 void func(int* ptr) {// 使用指针访问和修改指针所指向的值*ptr 10;// ... }int main() {int x 0;int* p x;// 将指针p作为参数传递给函数funcfunc(p);// x的值已经被修改为10return 0; } 在上面的例子中通过将指针p作为参数传递给函数func函数内部可以通过指针ptr来访问和修改p所指向的值。在函数中通过解引用操作符*来访问指针所指向的值。 需要注意的是传递一级指针作为参数时函数内部对指针所指向的值的修改是有效的因为传递的是指针变量本身的地址而不是指针变量的副本。 问在这种情况下函数能接受什么参数 答在这种情况下函数func可以接受一个指向整型变量的指针作为参数。在main函数中通过将指针p作为参数传递给func函数函数func可以使用指针访问和修改指针所指向的值。 2.2.4二级指针的传参 二级指针的传参是通过将指向指针的指针作为函数的参数传递给函数。 二级指针在某些情况下用于传递指针数组或二维数组的地址或者用于动态分配内存等场景。 下面是二级指针传参的基本形式 void func(int** ptr) {// 使用二级指针访问和修改指针所指向的值**ptr 20;// ... }int main() {int x 0;int* p x;int** pp p;// 将二级指针pp作为参数传递给函数funcfunc(pp);// x的值已经被修改为20return 0; }在上面的例子中通过将二级指针pp作为参数传递给函数func函数内部可以通过二级指针ptr来访问和修改pp所指向的值。在函数中通过解引用操作符*两次来访问指针所指向的值。 需要注意的是传递二级指针作为参数时需要对指针进行两次解引用才能访问到最终的值。在函数内部修改指针所指向的值也是有效的。 此外还要注意对于二维数组的传参可以使用一级指针或二级指针来传递二维数组的地址。 问在这种情况下函数能接受什么参数 答在这种情况下函数func可以接受一个指向指向整型变量的一级指针的二级指针作为参数。 2.3练习 2.3.1数组参数的练习题目 题目 编写一个函数接收一个整型数组和数组长度作为参数并返回数组中的最大值。 步骤 1. 在main函数中声明一个整型数组并初始化。 2. 定义一个函数findMax接收一个整型数组和数组长度作为参数并返回一个整型值。 3. 在findMax函数中定义一个变量max初始化为数组的首个元素。 4. 使用循环遍历数组比较数组中的每个元素与max的值并更新它。 5. 返回最大值。 6. 在main函数中调用findMax函数并将返回值打印出来。 流程图   开始 声明和初始化数组以及定义数组长度 定义函数findMax接收数组和长度作为参数并返回最大值 定义变量max并初始化为数组的首个元素 循环遍历数组比较当前元素和max的值若大于max则更新max的值 返回max 调用findMax函数并打印返回值 结束 代码   #include iostreamint findMax(int arr[], int size) {int max arr[0];for (int i 1; i size; i) {if (arr[i] max) {max arr[i];}}return max; }int main() {int arr[] {3, 5, 1, 4, 2};int size sizeof(arr) / sizeof(arr[0]);int max findMax(arr, size);std::cout Max: max std::endl;return 0; } 在这个例子中findMax函数接收一个整型数组和数组长度作为参数并返回最大值。函数内部使用循环遍历数组比较每个元素与max的值并根据情况更新它。在main函数中声明数组arr并初始化然后调用findMax函数并传递相应的参数将返回值存储在max变量中并使用std::cout 打印出来。 运行结果 2.3.2指针参数的练习题目 题目 编写一个函数接收一个整型数组的指针和数组长度作为参数并将数组中的所有元素翻转。 步骤 1. 在main函数中声明一个整型数组并初始化。 2. 定义一个函数reverseArray接收一个指向整型数组的指针和数组长度作为参数并将数组中的所有元素翻转。 3. 在reverseArray函数中使用两个指针start和end分别指向数组的起始和末尾位置。 4. 使用循环交换start和end指针所指向的元素并同时将start往后移动一位end往前移动一位。 5. 循环继续直到start指针超过或等于end指针。 6. 在main函数中调用reverseArray函数并将修改后的数组打印出来。 流程图   开始 声明和初始化数组以及定义数组长度 定义函数reverseArray接收整型数组指针和长度作为参数 定义指针start指向数组起始位置 定义指针end指向数组末尾位置 循环交换start和end指针所指向的元素并同时移动start和end指针若start指针超过或等于end指针则跳出循环 在main函数中调用reverseArray函数并打印修改后的数组 结束 代码   #include iostreamvoid reverseArray(int* arr, int size) {int* start arr;int* end arr size - 1;while (start end) {int temp *start;*start *end;*end temp;start;end--;} }int main() {int arr[] {1, 2, 3, 4, 5};int size sizeof(arr) / sizeof(arr[0]);std::cout Original array: ;for (int i 0; i size; i) {std::cout arr[i] ;}std::cout std::endl;reverseArray(arr, size);std::cout Reversed array: ;for (int i 0; i size; i) {std::cout arr[i] ;}std::cout std::endl;return 0; }在这个例子中reverseArray函数接收一个指向整型数组的指针和数组长度作为参数并将数组中的所有元素翻转。函数内部使用两个指针start和end分别指向数组的起始和末尾位置通过循环交换指针所指向的元素并同时移动指针直到start指针超过或等于end指针。在main函数中声明数组arr并初始化然后调用reverseArray函数并传递相应的参数将数组的元素翻转。最后使用std::cout打印出原始数组和翻转后的数组。 运行结果 总结 本篇博客到这里就结束了感谢大家的支持与观看如果有好的建议欢迎留言谢谢大家啦
http://www.w-s-a.com/news/293709/

相关文章:

  • 竞价单页网站制作中小企业网站建设问题
  • 响应式网站源码学校网站制作多少钱
  • 营销型网站建设需要懂什么网站建站四件套是什么
  • 廊坊哪里有制作手机网站的区块链开发语言
  • 找建设项目的网站装企工长网站开发
  • 戴尔网站建设成功方正网站制作
  • 怎么买网站域名wordpress 视频站模版
  • 厦门官网建设公司杨和关键词优化
  • 怎么做网约车seo自动优化软件下载
  • 遵义市住房和城乡建设局官方网站网站备案 自己的服务器
  • 分销系统价格多少北京网站优化平台
  • 怎样做旅游公司的网站泉州网站建设方案优化
  • 手机网站页面范例个人网站做淘宝客违规
  • 做一套网站开发多少钱SEO做得最好的网站
  • 咸宁做网站的公司那家便宜福建建设注册管理中心网站
  • 网站建设工作汇报黑科技广告推广神器
  • 淘宝做首页热点的什么网站徐州建设安全监督网站
  • 正规的镇江网站建设广州有什么好玩的东西
  • 丹阳网站设计公司网站开发 0755
  • 百度网页版浏览器网址找文网优化的技术团队
  • 信息网站怎么做做儿童网站赚钱吗
  • 帝国cms 网站迁移个人网站备案备注
  • 青岛做网站推广怎样做网站才不能被攻破
  • 使用网站模板快速建站教案杂志wordpress主题 无限加载
  • 南宁南宁做网站南安网络推广
  • 旌阳移动网站建设微网站 杭州
  • 合肥网站开发如何用VS2017做网站
  • 网站 制作公司福州企业建站软件
  • 网站推广主要方法一流的盘锦网站建设
  • 给个网站好人有好报2021东莞专业网站营销