用C++写出函数指针、返回指针的函数、指向常数的指针、指针常量。
时间: 2023-09-30 10:06:23 浏览: 49
函数指针:
```c
#include <stdio.h>
void add(int a, int b) {
printf("%d + %d = %d\n", a, b, a + b);
}
void subtract(int a, int b) {
printf("%d - %d = %d\n", a, b, a - b);
}
int main(void) {
void (*operation)(int, int); // 函数指针
operation = &add; // 指向函数add
operation(3, 4); // 调用函数add
operation = &subtract; // 指向函数subtract
operation(3, 4); // 调用函数subtract
return 0;
}
```
返回指针的函数:
```c
#include <stdio.h>
#include <stdlib.h>
int* create_array(int size) {
int* array = (int*)malloc(size * sizeof(int)); // 动态分配内存
for (int i = 0; i < size; i++) {
array[i] = i + 1;
}
return array; // 返回指针
}
int main(void) {
int* array = create_array(5); // 调用函数,得到指针
for (int i = 0; i < 5; i++) {
printf("%d ", array[i]); // 输出数组元素
}
free(array); // 释放内存
return 0;
}
```
指向常数的指针:
```c
#include <stdio.h>
int main(void) {
const int* p; // 指向常数的指针
int a = 5;
const int b = 10;
p = &a; // 指向变量a
printf("*p = %d\n", *p);
p = &b; // 指向常数b
printf("*p = %d\n", *p);
// *p = 20; // 错误,不能通过指针修改常数的值
return 0;
}
```
指针常量:
```c
#include <stdio.h>
int main(void) {
int a = 5;
int b = 10;
int* const p = &a; // 指针常量,指向变量a
printf("*p = %d\n", *p);
// p = &b; // 错误,指针常量不能再指向其他变量
*p = 20; // 正确,可以通过指针修改变量的值
printf("*p = %d\n", *p);
printf("a = %d\n", a);
return 0;
}
```