字符串变量数组--

来源:互联网 发布:编程语言排行榜2017 7 编辑:程序博客网 时间:2024/05/01 06:58

定义一个字符串地址的数组,通过数组统一处理字符串,便于使用完字符串之后,统一赋值NULL;

1,字符串地址的定义: char **d[3]={};

2,赋值以及读取:

for(i=0;i<=2;i++)
    {
        *d[i]="this id a test!!n";
    }

  printf("%s %s %s\n",*d[0],*d[1],*d[2]);

代码如下:

  1 #include<stdio.h>  2 #include<string.h>  3 char *a="zhang";  4 char *b="yong";  5 char *c="qiang";  6 char **d[3]={};  7 int main()  8 {  9     d[0]=&a; 10     d[1]=&b; 11     d[2]=&c; 12     printf("%s++%p,%x\n",a,a,&a); 13     int i; 14     printf("%x\n",d); 15     printf("%s\n",*d[0]); 16     for(i=0;i<=2;i++) 17     { 18         *d[i]="this id a test!!n"; 19     }    20     printf("%s %s %s\n",*d[0],*d[1],*d[2]); 21     printf("%s\n%s\n%s\n",a,b,c); 22      23     return 0;




十五行打印的时候,变量*d和*d[0],两者地址相同,都是第一个元素的地址,打印的效果不同,原因是*d的意义是整个数组为单位的地址,是指向char **类型的,而第二个变量指代的是char*.

所以打印printf(“%s”,*d)就是出现乱码问题,而printf("%s\n",*d[0]);是正确的
 

0 0
原创粉丝点击