指针字符串 和 数组字符串的区别

来源:互联网 发布:国外网络流行模式 编辑:程序博客网 时间:2024/05/16 19:54
1:字符数组是由若干个元素组成, 每个元素放一个字符,   字符指针变量中存放的是一个地址(字符串的第一个字符的地址), 绝不是将字符串放到字符指针变量中。

2:赋值方式: 
             对字符数组只能对各元素赋值, 不能用以下办法对字符数组赋值
                  char str[14];
                  str = "i love china";
            对字符指针变量, 可以采取下面的方法赋值
                  char *str;
                  str = "i love china";// 注意:  赋给str的不是字符, 而是字符串的第一个元                                 
                                                                  素的地址。
3:对字符指针变量赋初值:
               char*str = "i love china";
                等价于    char*str;
                                str = "i love china";
     对字符数组初始化:
                char str[14] = {"i love china"};
                不等价于   char str[14];
                                    str[] = "i love china";//  数组可以在定义的时候整体赋初值,        
                                                                            但不能在赋值语句中整体赋值。
4:定义字符数组, 编译时为他分配内存单元,有确定的地址
     定义字符指针变量,给指针变量分配内存单元, 在其中可以放一个字符变量的地址
     也就是说,该指针变量可以指向一个字符型数据, 但如果未对他赋予一个地址值,     
     则他并未具体指向一个确定的字符数据。
        例如:
                    char str[10];
                        scanf("%s", str);
                    是可以的。而常有人用下面的方法:
                    char *str;
                    scanf("%s", str);
                    虽然有时能运行, 但这是危险的, 不提倡;
                    char*str, a[100];
                    str = a;
                    scanf("%s", str);//  先使str有确定值指向一个数组的首元素,然后输入一
                                                  个字符串, 把他存在从该地址开始的若干单元中;
5:指针变量的值是可改变的
     例如:
            #include<stdio.h>
            void main()
            {
                char *a = "i love china";
                a = a +7;   // 间接表示a[7]
                printf("%s\n", a);//   从a[7]开始往后面输直到'\0';
                printf("%c", a[4]);   //a[4]是按*(a+4)处理, 即从a当前指的元素下移4个单
                                                   位输出其值;
             }
运行结果:china
                指针变量的值是可以变化的,   而数组名代表地址, 但它是常量, 不能改
                变的
                特殊:定义一个指针变量, 并使它指向一个字符串, 就可以下标形式引用
                           指针变量所指的字符串中的字符
                    
 
0 0
原创粉丝点击