Linux系统C程序员的环境变量和环境表

来源:互联网 发布:淘宝商城童装毛衣女孩 编辑:程序博客网 时间:2024/06/05 05:35
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程序员的环境变量与环境表练习 */#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;}



0 0
原创粉丝点击