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

# include

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);

该如何理解这种情况?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值