当前位置:  技术问答>linux和unix

一个很简单的程序,输出结果不懂。。

    来源: 互联网  发布时间:2017-03-02

    本文导语:  /* ret_ptr.h */ #ifndef RET_PTR_H #define RET_PTR_H extern char *get_a_day(int idx); #endif ------------------------------------------------------------- /* ret_ptr.c */ #include  #include "ret_ptr.h" static const char *msg[] = {"Sunday", "Monday", "Tuesday", "W...

/* ret_ptr.h */
#ifndef RET_PTR_H
#define RET_PTR_H

extern char *get_a_day(int idx);

#endif

-------------------------------------------------------------
/* ret_ptr.c */
#include 
#include "ret_ptr.h"

static const char *msg[] = {"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"};

char *get_a_day(int idx)
{
     static char buf[20];
     strcpy(buf, msg[idx]);
     return buf;
}

---------------------------------------------
/* main.c */
#include 
#include "ret_ptr.h"

int main(void)
{
     printf("%s %sn", get_a_day(0), get_a_day(1));
     return 0;
}

为什么输出的都是Sunday啊???

|
main里面的printf函数会先对两次函数调用进行求解然后再调用printf。一般是按照从右向左的顺序求解,这样两次函数运行完就剩下sunday的值了,然后printf通过指向static成员的指针取到sunday

|
因为两次函数调用都执行完之后才执行printf,然后两次函数调用返回的是同一个static buffer的地址,所以。

|
哥们儿 你的函数写的有问题,static char buf[20]; buf是静态变量
当然每次调用结果都是一样的

    
 
 

您可能感兴趣的文章:

  • linux开机运行的程序无法输出
  • 请教:在程序里用system启动一个命令,如何获得这个进程的正常输出和错误输出到一个字符串里?
  • 怎样把标准输出指定到一个文件,这样我便不用关心运行时间长的程序的屏幕输出,待运行完后看文件里的内容就可以了吧?
  • go和python调用其它程序并得到程序输出
  • 程序输出的问题
  • [新手提问]请问在命令行下追踪程序输出信息的方法
  • 有一个7*24运行的服务程序,现在我将这个程序的输出重定向到一个文本,现在要实时读取文本内容,有什么好的办法?
  • java程序在linux系统下中文输出乱码,输出一个汉字对应一个问号
  • 请教crontab中运行的程序输出的信息用什么命令删除?
  • 如何记录程序输出每一行日志的时间?
  • 请教关于dlopen,动态库连接程序的输出函数
  • unix shell中能否将后台运行程序的输出保存到变量中?
  • 请问如何在程序中获得shell命令输出的信息?
  • 开发android应用程序时,用java调用so库输出日志问题
  • linux下程序输出导入到mysql?
  • gcc程序怎么不能将输出重定向到文件或管道呀,你们有这个问题吗?
  • 请问,怎么把某个程序的输出赋给shell变量??
  • shell中如何得到程序的输出值
  • 怎么讲程序的运行时间输出到一个文件里面?
  • 怎么屏蔽控制台程序的打印输出信息
  • AIX 5.3下调用windows 2000上的exe程序,且AIX下需要得到windows下程序执行的返回结果
  • 一个程序两个结果,请高手分析原因
  • 如何将程序输出的结果重定向到另外的控制台
  • #请问nslookup和程序中使用gethostbyname为什么结果不同?
  • 在C程序里面执行unix的命令的时候怎么获取执行的结果了?
  • 运行的程序的结果答应出日志的问题
  • 菜鸟问题:为什么我的程序编译之后看不到运行结果?
  • 请问下面的程序为什么会得出这样的结果?
  • 请问以下程序结果,谢谢
  • 用gcc编译c程序能通过,为何没执行结果?
  • 我在cygwin里运行自己的程序结果不能print出来。然而在WIN_TC里却可以。这是为什么?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • 为什么我在java程序里启动的一个程序在java程序关闭后,该程序的所有进程都关掉了
  • windows server2008上PowerBuilder程序系统错误解决方法
  • Linux 编程怎么样在程序开启一个程序,和关闭一个程序?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • 程序员的八种级别,你属于哪一级?
  • Linux下的程序是在内存中运行的吗?为什么在程序运行的时候可以删除程序文件?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 我的程序是用c写的gtk+程序,有个函数的参数要传给它图片的文件名,但是图片和原程序不在同一目录下怎么办?怎么在程序里指定文件的路径
  • 在docker容器中通过apt-get安装新的程序
  • 为什么linux下的C++程序这么少见? 请问那里有linux下的C++程序?什么类型的程序都可以.
  • linux下通过crond实现自动执行程序
  • 我写了个linux下的网络程序,程序在多个电脑间通信,但是我没有多个电脑,怎么调试这样的程序啊?
  • http协议介绍,文件上传分析及程序举例
  • 在java控制台程序中,可以用System.exit(0);使用一个程序终止,那么在servlet中如何使一个servlet程序终止呢?
  • 程序员赚钱致富的6种方法
  • 程序调用脚本,脚本启动另一个程序,如何让原始程序彻底释放资源?
  • HASH查找的程序实现及性能分析
  • python计算程序开始到程序结束的运行时间和程序运行的CPU时间
  • 程序员为了健康必看!早晨空腹喝水,是对还是错?
  • linux下,一个程序如何向另一个程序发送消息,另一个程序如何接收


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3