iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中函数返回值不一致问题如何解决
  • 591
分享到

C语言中函数返回值不一致问题如何解决

2023-07-05 05:07:08 591人浏览 泡泡鱼
摘要

本文小编为大家详细介绍“C语言中函数返回值不一致问题如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言中函数返回值不一致问题如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。C语言函数返回值不一致

本文小编为大家详细介绍“C语言中函数返回值不一致问题如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言中函数返回值不一致问题如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    C语言函数返回值不一致

    在运行成程序上有时会发现函数内部的值与返回到主函数的值会相差很多出现随机值,但是它们的地址却相同!**一般的原因多是内存污染,多发于函数返回数组地址**或返回主函数后直接应用。

    例如下面的两个程序,不用关心它做了什么,只需观察它们的不同点(已注释)

    #include <stdio.h>#include <ctype.h>int *count_e(char *str);int main(){char str[] = {"abc,cba,def"};int *a,i;a = count_e(str);puts("\n");for(i=0;i<5;i++){printf(" a[%d] = %d ; &a = %p;\n",i,a[i],&a[i]);}free(a);return 0; } int *count_e(char *str){if(str == NULL)return NULL;int ls[5] = {0};       //关键!!!内存污染问题! int i,k,t;i = k = t = 0;while(isspace(str[i]))i++;                while(str[i]){if(isupper(str[i])){ls[1]++;k=1;}else if(islower(str[i])){ls[2]++;k=1;}else if(isdigit(str[i])){ls[4]++;k=1;}else if(isspace(str[i])){t = 1;}else{ls[3]++;t=1;} if(k==1 && t ==1){ls[0]++;k = t = 0;}i++;} for(t=0;t<5;t++)printf("ls[%d] = %d ; &ls[i] = %p\n",t,ls[t],&ls[t]);if(! isspace(str[--i]))ls[0]++;return ls;}

    运行如下:

    ls[0] = 2 ; &ls[i] = 000000000062FDB0
    ls[1] = 0 ; &ls[i] = 000000000062FDB4
    ls[2] = 9 ; &ls[i] = 000000000062FDB8
    ls[3] = 2 ; &ls[i] = 000000000062FDBC
    ls[4] = 0 ; &ls[i] = 000000000062FDC0 // !!!

    a[0] = 239139376 ; &a = 000000000062FDB0;
    a[1] = 32760 ; &a = 000000000062FDB4;
    a[2] = 1 ; &a = 000000000062FDB8;
    a[3] = 0 ; &a = 000000000062FDBC;
    a[4] = 11146080 ; &a = 000000000062FDC0; // !!!注意

    ------------------------------------分割线-----------------------------------------

    #include <stdio.h>#include <ctype.h>int *count_e(char *str);int main(){char str[] = {"abc,cba,def"};int *a,i;a = count_e(str);for(i=0;i<5;i++){printf(" a[%d] = %d ; &a = %p;\n",i,a[i],&a[i]);}free(a);return 0; } int *count_e(char *str){if(str == NULL)return NULL;int *ls = (int *)calloc(5,sizeof(int)); //ls[5] = {0}; !!!注意不同!!!内存污染问题!** int i,k,t;i = k = t = 0;while(isspace(str[i]))i++;                while(str[i]){if(isupper(str[i])){ls[1]++;k=1;}else if(islower(str[i])){ls[2]++;k=1;}else if(isdigit(str[i])){ls[4]++;k=1;}else if(isspace(str[i])){t = 1;}else{ls[3]++;t=1;} if(k==1 && t ==1){ls[0]++;k = t = 0;}i++;} for(t=0;t<5;t++)printf("ls[%d] = %d ; &ls[i] = %p\n",t,ls[t],&ls[t]);if(! isspace(str[--i]))ls[0]++;return ls;}

    运行如下:

    ls[0] = 2 ; &ls[i] = 00000000001D1430
    ls[1] = 0 ; &ls[i] = 00000000001D1434
    ls[2] = 9 ; &ls[i] = 00000000001D1438
    ls[3] = 2 ; &ls[i] = 00000000001D143C
    ls[4] = 0 ; &ls[i] = 00000000001D1440 //!!!!

    a[0] = 3 ; &a = 00000000001D1430;
    a[1] = 0 ; &a = 00000000001D1434;
    a[2] = 9 ; &a = 00000000001D1438;
    a[3] = 2 ; &a = 00000000001D143C;
    a[4] = 0 ; &a = 00000000001D1440; // !!!!

    此示例运用了分配内存的方法cmalloc()函数来替代直接创建的数组。

    函数的返回值注意事项

    函数的返回值

    一般情况下,通过函数的调用,使调用函数可以获得被调用函数的函数值,这个值就叫做返回值。

    注意事项

    ①、有的函数有返回值,有的函数没有返回值,具体看函数的声明类型,如果返回值类型为 void 则为无返回值类型;

    ②、函数的返回值是通过函数中的 return 语句获得的。一个函数中可以有一个以上的return语句,执行到哪个return就从哪个return返回了,return语句执行完之后,他之后的代码不会被执行;

    ③、函数内部的return返回值类型要与函数本身定义时候的返回值类型一致,即使不一致也是可以相互转化的,最终以函数定义时候的返回值类型为主进行转化,若转化不了则编译期间就报错了;

    ④、原则上一个函数只能有一个返回值,若要返回多个值则可以通过参数返回或者返回结构类型等等。

    读到这里,这篇“C语言中函数返回值不一致问题如何解决”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网其他教程频道。

    --结束END--

    本文标题: C语言中函数返回值不一致问题如何解决

    本文链接: https://www.lsjlt.com/news/349915.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • C语言中函数返回值不一致问题如何解决
      本文小编为大家详细介绍“C语言中函数返回值不一致问题如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言中函数返回值不一致问题如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。C语言函数返回值不一致...
      99+
      2023-07-05
    • C语言中函数返回值不一致问题
      目录C语言函数返回值不一致函数的返回值注意事项函数的返回值注意事项总结C语言函数返回值不一致 在运行成程序上有时会发现函数内部的值与返回到主函数的值会相差很多出现随机值,但是它们的地...
      99+
      2023-02-24
      C语言函数 函数返回值不一致 C语言函数返回值
    • C++中的函数返回值问题
      目录1、返回值2、指针类型的函数——返回指针3、返回引用4、综合示例首先,强调一点,和函数传参一样,函数返回时也会做一个拷贝。 从某种角度上看,和传参一样,也...
      99+
      2024-04-02
    • 如何解决Shell中函数返回值超出问题
      这篇文章主要介绍“如何解决Shell中函数返回值超出问题”,在日常操作中,相信很多人在如何解决Shell中函数返回值超出问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解决Shell中函数返回值超出问题...
      99+
      2023-06-09
    • js递归函数返回值问题如何解决
      在JavaScript中,递归函数的返回值问题可以通过以下方法解决:1. 使用全局变量:定义一个全局变量,递归函数在每次调用时更新全...
      99+
      2023-09-13
      js
    • C#函数out多个返回值问题怎么解决
      今天小编给大家分享一下C#函数out多个返回值问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。C#函数返回多个参数...
      99+
      2023-07-05
    • C语言返回值指针的函数详解
            #include<stdio.h> void main() { int a[5] = { 1,3,5,7,9 }; ...
      99+
      2024-04-02
    • 如何解决mybatis中方法返回泛型与resultType不一致的问题
      这篇文章主要介绍“如何解决mybatis中方法返回泛型与resultType不一致的问题”,在日常操作中,相信很多人在如何解决mybatis中方法返回泛型与resultType不一致的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
      99+
      2023-06-20
    • c语言scanf返回值被忽略如何解决
      当scanf函数的返回值被忽略,可能会导致程序出现错误或不按预期工作。为了解决这个问题,可以采取以下几种方法:1. 检查scanf函...
      99+
      2023-10-09
      c语言
    • 详解C语言中return返回函数局部变量的问题
      目录return返回栈区局部变量的指针return返回栈区局部的临时变量return只读数据段和static数据在计算机中,释放空间并不需要将空间中的内容全部置成0或者1,而是只要设...
      99+
      2024-04-02
    • 如何调试 C++ 函数返回值相关的问题
      调试 c++++ 函数返回值问题的关键技巧:检查函数头:确保返回类型正确,签名与实现匹配。使用调试器:跟踪函数调用、检查参数和返回值,验证数据结构状态。添加日志语句:跟踪函数执行,识别返...
      99+
      2024-04-13
      调试 c++ 返回值
    • 通过实例详解C语言函数返回值
      目录前言C语言返回值c语言函数调用后必须带回返回值总结前言 函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果通过 return 语句返回。 return 语句...
      99+
      2024-04-02
    • java递归函数返回值问题怎么解决
      在递归函数中,可以使用一个参数或者一个全局变量来保存计算结果,然后在递归调用的过程中更新这个参数或者变量的值,最终返回最终的结果。例...
      99+
      2023-09-26
      java
    • 如何解决jquery有正确返回值但不执行success函数的问题
      小编给大家分享一下如何解决jquery有正确返回值但不执行success函数的问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!从后台返回的结果是这样的:{“readyState”:4,”...
      99+
      2024-04-02
    • C语言中如何通过指针参数返回值
      目录简单的案例深夜无聊而引发的问题回归正题简单的案例2.0链表中"迷人"的指针再度分析总结简单的案例 深夜无聊而引发的问题 一般来说,在C语言中一个函数顶多只能返...
      99+
      2023-02-24
      C语言指针 C语言参数返回值 C语言参数
    • Pytorch:dtype不一致问题如何解决
      这篇“Pytorch:dtype不一致问题如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Pytorch:dtype不...
      99+
      2023-07-05
    • C语言中getchar函数详解看这一篇就够了(函数功能、使用、返回值)
      目录getchar函数简介getchar函数执行过程详解(配图)​getchar用法示例解释一下:while ((ch=getchar()) != 'EOF'...
      99+
      2023-02-28
      C语言 getchar函数 getchar函数用法
    • C语言中返回值指针函数的示例分析
      这篇文章主要为大家展示了“C语言中返回值指针函数的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言中返回值指针函数的示例分析”这篇文章吧。   #inc...
      99+
      2023-06-29
    • redis主从数据不一致问题如何解决
      使用Redis的复制(Replication)功能来保证数据一致性。可以将主节点写入的数据同步到从节点,确保从节点的数据与主节点...
      99+
      2024-04-09
      redis
    • ajax返回值给外部函数如何解决
      本篇文章给大家分享的是有关ajax返回值给外部函数如何解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。如下所示:function validateUser(mya)...
      99+
      2023-06-08
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作