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语言的代码训练中,然后,通过实践去加深对该知识点的理解与运用。
>>>下载训练环境与使用说明(使用真实的开发环境,结合游戏闯关进行
编程训练)
|