指针做形参求实数和与差
时间: 2023-11-28 14:51:19 浏览: 29
可以使用指针作为函数形参,来实现对函数外部变量的修改。以下是一个求两个实数和与差的函数示例:
```c
#include <stdio.h>
void sum_diff(double x, double y, double *p_sum, double *p_diff) {
*p_sum = x + y;
*p_diff = x - y;
}
int main() {
double a = 10.0, b = 5.0, sum, diff;
sum_diff(a, b, &sum, &diff);
printf("The sum of %lf and %lf is %lf\n", a, b, sum);
printf("The difference between %lf and %lf is %lf\n", a, b, diff);
return 0;
}
```
在上面的代码中,`sum_diff` 函数接受两个实数 `x` 和 `y`,以及两个指向实数的指针 `p_sum` 和 `p_diff`。函数内部通过指针修改 `p_sum` 和 `p_diff` 指向的内存空间的值。在 `main` 函数中,我们定义了两个实数 `a` 和 `b`,以及两个实数指针 `sum` 和 `diff`,并将它们作为参数传递给 `sum_diff` 函数,在函数返回后,打印出计算结果。
相关问题
用指针做形参和用数组做形参的区别
在C/C++语言中,用指针作为函数的形参和用数组作为函数的形参的区别主要有以下几点:
1. 用指针作为函数的形参时,指针可以指向一个变量,也可以指向数组,可以通过指针操作指向的内存地址。而用数组作为函数的形参时,数组名实际上是数组首元素的地址,因此传递的是整个数组的值,不能直接操作数组名所指向的内存地址。
2. 用数组作为函数的形参时,大小必须明确指定,不能修改大小。而用指针作为函数的形参时,可以根据需要修改指针指向的内存区域。
3. 用数组作为函数的形参时,数组本身会被复制,因此会占用额外的内存空间。而用指针作为函数的形参时,只是传递了指针所指向的地址,不会占用额外的内存空间。
4. 用数组作为函数的形参时,数组元素不可以为NULL。而用指针作为函数的形参时,指针可以为NULL,因此在使用指针时需要进行空指针判断。
5. 在函数内部修改指向数组的指针不会影响外部数组本身。而在函数内部修改指向指针的指针也可以修改外部数组本身。
c语言双重指针做形参
C语言中的双重指针是指一个指针变量的地址存储在另一个指针变量中。这个概念通常用于多级指针或者在函数中修改指针的值。在C语言中,使用双重指针可以通过间接引用的方式修改原始指针的值。
下面是一个简单的示例代码,展示了如何使用双重指针:
```
#include <stdio.h>
void modifyValue(int** ptr) {
int newValue = 10;
*ptr = &newValue;
}
int main() {
int value = 5;
int* ptr = &value;
printf("Before modification: %d\n", *ptr);
modifyValue(&ptr);
printf("After modification: %d\n", *ptr);
return 0;
}
```
在这个示例中,`modifyValue` 函数接受一个 `int**` 类型的参数,即双重指针。它将创建一个新的整数变量 `newValue` 并将其地址存储在传入的指针 `ptr` 所指向的位置上。通过间接引用 `*ptr`,我们可以修改 `main` 函数中的 `ptr` 指针的值。
运行上面的代码,输出将会是:
```
Before modification: 5
After modification: 10
```
通过双重指针,我们成功地在函数中修改了原始指针的值。这在某些情况下非常有用,例如动态分配内存或者在函数中修改指针参数。