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中的“字符串指针作为函数参数”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用“字符串指针作为函数参数”去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”。
不要停留在理论规则上面,快动起来吧!
(通过游戏模式学习与训练,需要在电脑上运行)