C 字符串指针作为函数参数


  1、字符串指针作为函数参数——在函数中通过字符型指针变量作为参数,接收字符串在内存中的起始地址来对字符串中的字符进行处理,而处理后的结果,在函数调用结束以后也可以使用。

 

 

  2、例子:

        void test( char *a)

        {

         char *k="34";

         while( *a !='\0')

         {

          *a =*k;

          a=a+1;

          k=k+1;

         }

        }

 

        int main()

        {

         char x[]="12";         

         test( x );// x就是字符串指针作为参数

        }

 

  地址 “12”
a与x 指向 1000 ‘1’
  1001 ‘2’
  1002 ‘\0’
    “34”
k 指向 1003 ‘3’
  1004 ‘4’
  1005 ‘\0’

 

 

 

 

 

 

 

 

 

 

 

例子分析:

(1)首先,我们定义了一个函数test,同时参数部分定义了一个字符型的指针变量a作为形参。

(2)在main函数中,定义了一个字符型变量数组x并赋初值“12”。

(3)然后,调用函数test,并将字符型数组x作为参数传递给形参a(x就是字符串指针作为参数)。

(4)在函数test中定义了字符型指针变量k,指向字符串“34”;

(5)然后,使用while循环来判断指针变量a是否不等于'\0',而当前的a是接收了字符型数组x,所以,就指向x数组在内存中的起始地址,从上面的表格可以看到是1000,同时,当前单元中的值是'1',所以,不等于'\0'。

   然后,可以执行*a=*k,而k当前指向1003,该单元的值是'3',所以,经过赋值后,a所指向的地址1000的单元值由'1'变为'3'。

   然后,执行a=a+1,而a中的值由1000变为1001

   然后,再执行k=k+1,而k中的值由1003变为1004

(6)然后,while再判断*a != '\0',当前a指向地址1001,而该单元的值是'2',所以,不等于'\0'。

   然后,再执行*a =*k; 而当前的k指向地址1004,而该单元的值是'4',所以,赋值后,a所指向的地址1001的单元中的值变为'4'。

   然后,执行a=a+1,而a中的值由1001变为1002

   然后,再执行k=k+1,而k中的值由1004变为1005

(7)然后,while再判断*a != '\0',当前a指向地址1002,而该单元的值是'\0',所以,等于'\0',while循环结束。最后,数组x中的值就由原来的“12”变为“34”。

 

 

   非常好,现在,我们已经掌握了C中的“字符串指针作为函数参数”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用“字符串指针作为函数参数”去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”

 

      不要停留在理论规则上面,快动起来吧!

 

(通过游戏模式学习与训练,需要在电脑上运行)

进入游戏学习与训练