Linux系统C程序员的环境变量和环境表
2015-08-24 19:35
621 查看
C程序员的环境变量和环境表
C语言中环境存储在字符指针数组中,就是环境表;
环境表可以看成是二级指针,用来指定环境变量;
char *s[5]; //字符指针数组,元素是字符指针;
char **s; //二级指针
环境表的使用只需要写上 extern char** environ; //外部全局变量
environ就是环境表的首地址;
echo $OLDPWD
指针的回顾
指针就是一个存储另一个变量地址的变量;
int i = 10;
int *pi = &i;
pi就是指针,i就是普通整型变量;
*pi == i
&i == pi
指针的运算
支持加法和减法,但加法只能加上整数;
pi + 1 就是移动指针, 移动的字节数由指向变量的类型决定;
如果pi是 int *, 移动4个字节;
如果是 char *, 移动1个字节;
如果pi是 char **, 移动 char*的大小,即4个字节;
sizeof(指向的类型);
*p++ 先做p++再取*;但后++会在语句结束时才做;
(*p)++ 先取*再++;
如果 char** p, (*p)++导致*p移动一个字节,p不动;
char *str[5]; //指针数组,存放指针的数组(char *)str[5];
char (*str)[5]; //数组指针,指向数组的指针;
一定要多练
C语言中环境存储在字符指针数组中,就是环境表;
环境表可以看成是二级指针,用来指定环境变量;
char *s[5]; //字符指针数组,元素是字符指针;
char **s; //二级指针
环境表的使用只需要写上 extern char** environ; //外部全局变量
environ就是环境表的首地址;
echo $OLDPWD
指针的回顾
指针就是一个存储另一个变量地址的变量;
int i = 10;
int *pi = &i;
pi就是指针,i就是普通整型变量;
*pi == i
&i == pi
指针的运算
支持加法和减法,但加法只能加上整数;
pi + 1 就是移动指针, 移动的字节数由指向变量的类型决定;
如果pi是 int *, 移动4个字节;
如果是 char *, 移动1个字节;
如果pi是 char **, 移动 char*的大小,即4个字节;
sizeof(指向的类型);
*p++ 先做p++再取*;但后++会在语句结束时才做;
(*p)++ 先取*再++;
如果 char** p, (*p)++导致*p移动一个字节,p不动;
char *str[5]; //指针数组,存放指针的数组(char *)str[5];
char (*str)[5]; //数组指针,指向数组的指针;
一定要多练
/* * C程序员的环境变量与环境表练习 */ #include <stdio.h> #include <string.h> int main() { extern char **environ; //全局变量,改变了有影响 char **p = environ; //p是局部变量,改变了无影响 //p是字符指针数组; //练习:写一个循环打印所有环境变量(数组元素),数组以NULL结束 while (*p /* != NULL */ ) { //可以省略,C程序效率十分重要 printf("%s\n", *p); /* printf("\t%p\n", p); */ p++; } //写一个循环,把LANG的值取出来,存入value中 //提示:比较字符串的前n个字符strncmp(); p = environ; //指针回到开始; char value[100] = { }; while (*p) { if (!strncmp(*p, "LANG=", 5)){ /* printf("%s\n", *p); */ strcpy(value, (*p) + 5); break; } p++; } printf("value = %s\n", value); return 0; }
相关文章推荐
- Linux系统程序员的错误处理
- Linux系统编程静态库和共享库
- Linux系统环境变量
- Linux系统gcc编译指令
- linux关机和重启命令
- Linux系统下buffer内存与cache内存的区别
- 读书笔记之linux/unix系统编程手册(26)
- 有或无操作系统的Linux设备驱动区别
- Linux下安装配置使用 Keepalived
- linux查看开启的服务
- Linux定时任务Crontab详解
- centos安装git
- linux之chattr命令
- 一次奇怪的调优
- linux下pip安装mysql-python的错误解决方法
- linux下core文件设置与查看
- armlinux内核启动--内存初始化管理
- linux之cut命令
- Linux防DDOS***工具之DDoS Deflate
- Linux环境下段错误的产生原因及调试方法小结