关于c语言函数传址的规定

发布于 2022-09-12 23:26:54 字数 776 浏览 44 评论 0

# include <stdio.h>

void swap(int *x, int *y);

void main025()
{
    int i, j;

    i = 12;
    j = 36;

    printf("i and j before swapping: %d %d\n", i, j);

    swap(&i, &j);    /* 传递变量i和j的地址 */

    printf("i and j after swapping: %d %d\n", i, j);
}

void swap(int *x, int *y)
{
     int temp;
    
    temp = *x;    /* 存储变量x的值 */
    *x = *y;      /* 将y的值放入到x中 */
    *y = temp;    /* 将x的值放入到y中 */
}

对于上面的函数,

void swap(int *x, int *y)函数要求传入两个指针,也就是地址
调用的时候,在main函数里可以看到就真的是传址:swap(&i, &j);
但如果一个输入参数类型是字符指针的形式:char * c
比如:
HANDLE open(char * COMx);
open函数和swap函数输入参类型同样是指针,但调用的时候,却不能按照传址的方式调用,
比如有个字符数组作为参数传入到open: char str[10] = { 0 };
调用方式如果按传址就会报错,反向是按照传值方式转入:open(str);

该如何理解这种情况?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

琉璃繁缕 2022-09-19 23:26:54

对于 char str[10] = { 0 };
str本身就是指针,指向数组的第一个元素。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文