我将 char 指针声明为函数的参数,并将 char 数组作为参数。
有人告诉我,char 指针和 char 数组是不同的类型。
但是函数可以有一个 char 数组作为 char 指针。
另外,char指针的一个元素是可以改变的,虽然参数是char指针。
这是展示案例的代码。
#include<stdio.h>
void changeelement(char *p) {
p[0]='v';
}
int main() {
char array[]="boice";
changeelement(array);
printf("%s", array);
return 0;
}
char指针和char数组的区别有很多答案,但是没有这种情况的答案
感谢您抽出时间。
编译器将具有数组类型的参数调整为指向数组元素类型的指针。
所以这些函数声明
void changeelement(char p[100] );
void changeelement(char p[10] );
void changeelement(char p[] );
和
void changeelement(char *p );
是等价的并声明相同的函数。
所以你可以在同一个程序中编写例子
void changeelement( char *p );
void changeelement( char p[] )
{
p[0] = 'v';
}
另一方面,用作参数表达式的数组被隐式转换为指向其第一个元素的指针。
在 C 中,通过引用传递对象意味着通过指向它的指针间接传递对象。因此取消引用指针函数可以直接访问指针指向的对象并可以更改它。
例如
#include <stdio.h>
void f( int *p )
{
*p = 10;
}
int main( void )
{
int x = 0;
f( &x );
printf( "x = %d\n", x );
}
程序输出为
x = 10
类似地,当函数处理指向数组第一个元素的指针,然后取消引用指针并使用指针算法时,函数可以更改数组的任何元素。