C语言 字符串指针作为参数

  1、 字符串指针作为参数

     字符串指针作为参数,在C语言中,我们可以把字符串的指针作为(实际参数)传递给函数中的(形式参数),

    同时,当形式参数接收到字符串的指针以后,就会指向字符串,然后,在函数中对字符串作出的改动结果,

    在函数调用完毕后仍然保存。

    

  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语言中的(字符串指针作为函数参数)但是,如何去运行用它呢?

所以,我们就需要通过下方的链接,进入到C语言的代码训练中,然后,通过实践去加深对该知识点的理解与运用。

>>>下载训练环境与使用说明(使用真实的开发环境,结合游戏闯关进行 编程训练)