Main函数的参数
在C和C++等编程语言中,main
函数是程序的入口点,它通常有以下几种形式:
int main(void);
int main();
int main(int argc, char *argv[]);
int main(int argc, char **argv);
其中,最常用的是带有参数的形式:
int main(int argc, char *argv[]);
参数说明:
-
argc
(Argument Count):- 这是一个整数,表示传递给程序的命令行参数的数量。
argc
至少为1,因为程序名本身就是第一个参数。
-
argv
(Argument Vector):- 这是一个指向字符数组的指针数组,每个元素都是一个字符指针,指向一个参数的字符串表示。
argv[0]
是程序的名称或路径。argv[1]
到argv[argc-1]
是传递给程序的其他参数。
代码示例
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc != 4) {
printf("Usage:\n\t%s [-add|sub|mul|div] x y\n", argv[0]);
return 1;
}
int x = atoi(argv[2]);
int y = atoi(argv[3]);
if (strcmp("-add", argv[1]) == 0) {
printf("%d + %d = %d\n", x, y, x + y);
}
else if (strcmp("-sub", argv[1]) == 0) {
printf("%d - %d = %d\n", x, y, x - y);
}
else if (strcmp("-mul", argv[1]) == 0) {
printf("%d * %d = %d\n", x, y, x * y);
}
else if (strcmp("-div", argv[1]) == 0) {
printf("%d / %d = %d\n", x, y, x / y);
}
else {
printf("unknown\n");
}
return 0;
}
main
函数的参数解释
参数 argc
argc
是一个整数,表示传递给程序的命令行参数的数量。- 在这个程序中,期望
argc
的值是 4。- 第一个参数是程序的名称。
- 第二个参数是操作类型(如
-add
、-sub
、-mul
、-div
)。 - 第三个参数是第一个操作数
x
。 - 第四个参数是第二个操作数
y
。
参数 argv
argv
是一个字符指针数组,每个元素是一个字符串,表示一个命令行参数。argv[0]
是程序的名称。argv[1]
是操作类型。argv[2]
是第一个操作数,作为字符串表示。argv[3]
是第二个操作数,作为字符串表示。
执行结果
./myprocess -add 10 20
./myprocess -sub 30 10
./myprocess -mul 4 5
./myprocess -div 100 25
输出结果
10 + 20 = 30
30 - 10 = 20
4 * 5 = 20
100 / 25 = 4
Linux的环境变量
环境变量(Environment Variables)是在操作系统中用于存储配置信息的一种机制,它们影响进程的行为。环境变量是以键值对形式存储的,可以由操作系统和应用程序来读取和使用。
环境变量的特点
- 全局性:环境变量在操作系统级别是全局的,可以在系统的任何地方访问。
- 动态性:可以在程序运行时动态地修改。
- 影响范围:环境变量可以影响到从父进程派生的子进程的行为。
常见的环境变量
- PATH:指定可执行文件的搜索路径。
- HOME:当前用户的主目录。
- USER:当前登录的用户名。
- SHELL:当前用户的默认命令解释器。
- LANG:定义系统的语言和字符编码。
查看和设置环境变量
在Linux/Unix系统中
查看环境变量:
使用 echo
命令:
echo $PATH
使用 printenv
或 env
命令:
printenv
env
设置环境变量:
临时设置:
export VAR_NAME=value
永久设置:编辑 ~/.bashrc
或 ~/.bash_profile
文件,添加以下行:
export VAR_NAME=value
使用环境变量的示例
C语言中的使用
在C语言中,可以使用 getenv
函数获取环境变量的值。以下是一个示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
const char* path = getenv("PATH");
if (path != NULL) {
printf("PATH: %s\n", path);
} else {
printf("PATH environment variable not found.\n");
}
return 0;
}