返回

C语言 - 指针作为函数形参类型

后端

指针作为函数形参类型

在C语言中,指针可以作为函数形参类型,允许函数直接访问并修改实参中的数据。这在许多情况下非常有用,例如,当需要在函数中修改实参的值时,或者当需要在函数中访问实参中的数据时。

传递参数

当把指针作为函数形参类型时,实参的地址会被传递给函数。这意味着函数可以访问和修改实参中的数据,而不会影响实参本身。

修改参数

如果需要在函数中修改实参的值,可以使用指针来实现。只需使用指针来访问实参中的数据,然后对其进行修改即可。

字符串处理

在字符串处理中,指针作为函数形参类型非常有用。例如,在字符串比较、字符串复制和字符串连接等操作中,都可以使用指针作为函数形参类型来简化代码并提高效率。

示例代码

以下是一个示例代码,演示了如何使用指针作为函数形参类型来实现字符串比较:

#include <stdio.h>
#include <string.h>

int string_compare(const char *str1, const char *str2) {
  while (*str1 && *str2) {
    if (*str1 != *str2) {
      return *str1 - *str2;
    }
    str1++;
    str2++;
  }
  return *str1 - *str2;
}

int main() {
  char str1[] = "Hello";
  char str2[] = "World";

  int result = string_compare(str1, str2);

  if (result == 0) {
    printf("The two strings are equal.\n");
  } else if (result < 0) {
    printf("The first string is less than the second string.\n");
  } else {
    printf("The first string is greater than the second string.\n");
  }

  return 0;
}

在这个例子中,string_compare函数接受两个字符串指针作为形参,并比较这两个字符串。函数内部使用while循环逐个比较两个字符串中的字符,直到遇到'\0'字符或两个字符串的长度不同。如果两个字符串相等,则返回0;如果第一个字符串小于第二个字符串,则返回一个负数;如果第一个字符串大于第二个字符串,则返回一个正数。

在main函数中,定义了两个字符串str1和str2,并调用string_compare函数比较这两个字符串。根据比较结果,输出相应的提示信息。