首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C/C++工程师面试题(指针篇)

C/C++工程师面试题(指针篇)

作者头像
SarPro
发布2024-02-20 13:13:42
发布2024-02-20 13:13:42
5790
举报
文章被收录于专栏:【计网】Cisco【计网】Cisco

什么是函数指针,如何定义函数指针,与指针函数有何区别

参考链接:函数指针和指针函数区别

智能指针

参考链接:智能指针的用法

指针常量和常量指针和常量指针常量

define与const关键字的多种用法-CSDN博客

nullptr调用成员函数可以吗?为什么?

能。 原因:因为在编译时对象就绑定了函数地址,和指针空不空没关系。

说说使用指针需要注意什么?

  1. 定义指针时,先初始化为NULL
  2. 在使用指针之前,通常应检查它是否为 NULL,以防止访问无效的内存
  3. 如果分配了动态内存(如使用 malloc、calloc 或 new),确保在不再需要它时释放它(使用 free 或 delete)。否则,会导致内存泄漏
  4. 用free或delete释放了内存之后,立即将指针设置为NULL,防止“野指针”

c++指针和引用的区别

  1. 指针可以被重新赋值指向其他变量,而引用一旦绑定到一个变量上就不能再绑定到其他变量上。
  2. 指针可以被声明为nullptr,表示指向空地址,而引用必须始终绑定到一个有效的对象上。
  3. 指针可以进行算术运算,比如加减,以及指针与整数进行加减运算,而引用只能作为变量的别名使用,不能进行算术运算。
  4. 指针可以指向指针,而引用只能绑定到一个变量上。

传参区别

代码语言:javascript
复制
#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 *p (无类型指针)

注意在使用 void * 指针时,为了正确解引用指针并获取其指向的值,需要在使用前进行类型转换。无法进行指针运算 malloc返回的就是void *指针

下面代码中使用了 (int*)(double*)(char*) 分别进行了类型转换。

代码语言:javascript
复制
#include <stdio.h>

int main() {
    // 声明一个 void 指针
    void *p;

    // 声明一些变量
    int num = 10;
    double pi = 3.14159;
    char letter = 'A';

    // 将 void 指针指向不同类型的变量
    p = &num;
    printf("整数变量的值:%d\n", *((int*)p));

    p = &pi;
    printf("双精度浮点数变量的值:%lf\n", *((double*)p));

    p = &letter;
    printf("字符变量的值:%c\n", *((char*)p));

    return 0;
}

double free什么情况会造成?

"Double free"是一种内存管理错误,通常发生在动态内存分配和释放的情境中。它指的是尝试多次释放同一块内存的错误行为。这种错误可能会导致程序崩溃、不稳定性或数据损坏。

什么是野指针(指针悬挂),如何解决

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是函数指针,如何定义函数指针,与指针函数有何区别
  • 智能指针
  • 指针常量和常量指针和常量指针常量
  • nullptr调用成员函数可以吗?为什么?
  • 说说使用指针需要注意什么?
  • c++指针和引用的区别
  • void *p (无类型指针)
  • double free什么情况会造成?
  • 什么是野指针(指针悬挂),如何解决
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档