• 指针系统学习5-对使用字符指针变量和字符数组的讨论


    虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一谈……

    主要概括起来有以下几点:

    1. 字符数组由若干个元素组成,每个元素中  放一个字符,而字符指针变量中存放的是地址(字符串第1个字符的地址),决不是将字符串放到字符指针变量中。

    2. 赋值方式。对字符数组只能对各个元素赋值,不能用以下办法对字符数组赋值。
         char  str[20];
         str=″I love Fishc.com!″;
     
      而对字符指针变量,可以采用下面方法赋值:
         char *a;
         a=″I love Fishc.com!″;
      但注意赋给a的不是字符,而是字符串第一个 元素的地址。

    3. 对字符指针变量赋初值:
        char *a=″I love Fishc.com!″;
           等价于
          char *a;
        a=″I love Fishc.com!″;

        而对数组的初始化:
        char str[20]={″I love Fishc.com!″};
        不能等价于
        char str[20];
        str[ ]=″I love Fishc.com!″;

    4. 如果定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址。而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个字符变量的地址也就是说,该指针变量可以指向一个字符型数据,但如果未对它赋予一个地址值,则它并未具体指向一个确定的字符数据。  

    我们举个例子来说明,如:
      char str[10];
      scanf(″%s″,str);
         以上是完全可以的!

    而常有人用下面的方法,目的是想输入一个字符串,虽然一般也能运行,但这种方法是危险的 :
                 char *a;
          scanf(″%s″,a);

    5. 指针变量的值是可以改变的,如:改变指针变量的值

    #include <stdio.h>
    
    void main()
    {
          char *a = "I love Fishc.com!";
          printf("%s
    ", a);//I love Fishc.com!
    
          a += 7;
          printf("%s
    ", a);//Fishc.com!
    }
    View Code

     另外需要说明的是,若定义了一个指针变量,并使它指向一个字符串,就可以用下标形式引用指针变量所指的字符串中的字符。
        下标形式引用指针变量如下:

    #include <stdio.h>
    void main()
    {
          char *a = "I love Fishc.com!";
          int i;
    
          printf("The sixth character is %c
    
    ", a[5]);//The sixth character is e
    
          for( i=0; a[i] != ''; i++ )
          {
                printf("%c", a[i]);
          }
          //I love Fishc.com!
          printf("
    ");
    }
    View Code





  • 相关阅读:
    Oracle2MySQL数据校验
    MySQL物理删除大表文件的方式
    MySQL恢复误删除的ibd文件
    如何下载MySQL企业版数据库
    C++篇之成员函数注册为回调函数
    Java入门篇
    日常收藏之Linux篇
    实现简单网页rtmp直播:nginx+ckplayer+linux
    网络通信之accept函数简述
    网络通信之bind、listen函数简述
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/10046708.html
Copyright © 2020-2023  润新知