参考链接:函数指针和指针函数区别
参考链接:智能指针的用法
能。 原因:因为在编译时对象就绑定了函数地址,和指针空不空没关系。
传参区别
#include <iostream>
using namespace std;
void foo(int* ptr) {//指针
*ptr = 42;
cout<<"*ptr = "<<*ptr<<endl;//42
}
void foo1(int& ref) {//引用
ref = 5;
cout<<"ref = "<<ref<<endl;//5
}
int main() {
int x = 10;
int* ptr = &x;
foo1(x);
foo(ptr);
cout<<"x = "<<x<<endl;
return 0;
}注意在使用
void *指针时,为了正确解引用指针并获取其指向的值,需要在使用前进行类型转换。无法进行指针运算 malloc返回的就是void *指针
下面代码中使用了 (int*)、(double*) 和 (char*) 分别进行了类型转换。
#include <stdio.h>
int main() {
// 声明一个 void 指针
void *p;
// 声明一些变量
int num = 10;
double pi = 3.14159;
char letter = 'A';
// 将 void 指针指向不同类型的变量
p = #
printf("整数变量的值:%d\n", *((int*)p));
p = π
printf("双精度浮点数变量的值:%lf\n", *((double*)p));
p = &letter;
printf("字符变量的值:%c\n", *((char*)p));
return 0;
}"Double free"是一种内存管理错误,通常发生在动态内存分配和释放的情境中。它指的是尝试多次释放同一块内存的错误行为。这种错误可能会导致程序崩溃、不稳定性或数据损坏。

