【编程语言 · C语言 · 指针和函数】

指针与函数

指针大大扩展了功能的可能性。我们不再局限于返回一个值。使用指针参数,你的函数可以更改实际数据,而不是数据副本。

要更改变量的实际值,调用语句将地址传递给函数中的指针参数。

例如,以下程序交换两个值:

void swap (int *num1, int *num2);

int main() {
  int x = 25;
  int y = 100;

  printf("x is %d, y is %d\n", x, y); 
  swap(&x, &y);
  printf("x is %d, y is %d\n", x, y); 

  return 0;
}
 
void swap (int *num1, int *num2) {
  int temp;

  temp = *num1;
  *num1 = *num2;
  *num2 = temp;
}

程序交换变量的实际值,因为函数使用指针按地址访问它们。

【单选题】该代码的输出是什么?

#include <stdio.h>

void test(int * x) {
*x += *x/2;
}

int main() {
int v = 8;
test(&v);
printf("%d", v);
}

8

4

6

12

补充:

如何使用指针?

使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值。这些是通过使用一元运算符 * 来返回位于操作数所指定地址的变量的值。下面的实例涉及到了这些操作:

#include <stdio.h>
int main (){   int  var = 20;   /* 实际变量的声明 */   int  *ip;        /* 指针变量的声明 */
   ip = &var;  /* 在指针变量中存储 var 的地址 */
   printf("Address of var variable: %x\n", &var  );
   /* 在指针变量中存储的地址 */   printf("Address stored in ip variable: %x\n", ip );
   /* 使用指针访问值 */   printf("Value of *ip variable: %d\n", *ip );
   return 0;}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟程序员__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值