要怎么做呢 有点不知道怎么入手 指针的概念还是不太清楚 做题有点无从下手
根本原因:环境变量可以被子进程继承下去(而bash的是从环境变量从系统中读取来的,而系统又是从配置文件中读取的)
我们在命令行上面启动的进程(子进程),父进程都是我们的bash!(命令行解释器) ,启动方式调用fork函数。export实际上是把本地变量导给了父进程bash!
证明:
我们先设置一个本地变量:my_env_string="AAAAA"
通过它来查看
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("my_env_string: %s\n",getenv("my_env_string"));
return 0;
}
我们通过在命令行上敲击指令(子进程),确实可以查看到我们人为导入后的环境变量,但是我们的export是导给bash进程的(父进程),原来运行程序失败,现在导入后(意思就是现在父进程多了一个环境变量),再次敲击命令(子进程),结果成功,这就说明了我们的子进程继承到了我们父进程bash的环境变量 ,这就是环境变量具有全局属性!
总结:环境变量可以被继承,就是说可以影响整个“用户”系统!
所以我们在用一些gdb、gcc命令时,不用带那么多选项就能执行,本质就是从bash那里继承了环境变量。
谢谢观看!
该题涉及到多个问题,包括C语言编程、数据结构与算法、操作系统等方面,建议首先精读代码及注释,同时,该题中提到了一些常见的数据结构,包括顺序栈、共享栈及顺序表,需要了解它们的特点、基本操作和实现方式。对于C语言部分代码,理解scanf、printf、strcpy、strlen与malloc等常见的函数是基础;对于数据结构和算法,需要了解如何定义一些常见的数据结构,如线性表、顺序栈等;对于操作系统部分的分页机制,需要了解页表的基本原理和实现方式,并掌握虚拟地址如何转换为物理地址。如果有具体问题,请提出。
答案:选 A.
*pb = &b; (*pb)++; (*pb) 括号先解引用,然后 ++ , 等价于 b++; 执行完 b = 3.
根据代码分析,程序运行过程如下:
因此,程序的运行结果是4(选项A)。