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

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


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

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

智能指针

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

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

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

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

能。

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

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

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

c++指针和引用的区别

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

传参区别

#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*) 分别进行了类型转换。

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

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

目录
相关文章
|
1天前
|
C++
【C++11(三)】智能指针详解--RAII思想&循环引用问题
【C++11(三)】智能指针详解--RAII思想&循环引用问题
|
1天前
|
人工智能 C++
【重学C++】【指针】轻松理解常量指针和指针常量
【重学C++】【指针】轻松理解常量指针和指针常量
4 0
|
1天前
|
存储 人工智能 C++
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
20 1
|
16天前
|
安全 应用服务中间件 网络安全
渗透测试工程师面试题大全
渗透测试工程师面试题大全
|
16天前
|
存储 C++
C++指针
C++指针
|
27天前
|
存储 编译器 C语言
【c++】类和对象(二)this指针
朋友们大家好,本节内容来到类和对象第二篇,本篇文章会带领大家了解this指针
【c++】类和对象(二)this指针
|
28天前
|
存储 编译器 C语言
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
|
29天前
|
敏捷开发 安全 API
C/C++ 工程师面试:如何精彩展示你的项目经验并获得高分
C/C++ 工程师面试:如何精彩展示你的项目经验并获得高分
73 0
|
27天前
|
Java 程序员
java线程池讲解面试
java线程池讲解面试
50 1
|
2月前
|
存储 关系型数据库 MySQL
2024年Java秋招面试必看的 | MySQL调优面试题
随着系统用户量的不断增加,MySQL 索引的重要性不言而喻,对于后端工程师,只有在了解索引及其优化的规则,并应用于实际工作中后,才能不断的提升系统性能,开发出高性能、高并发和高可用的系统。 今天小编首先会跟大家分享一下MySQL 索引中的各种概念,然后介绍优化索引的若干条规则,最后利用这些规则,针对面试中常考的知识点,做详细的实例分析。
246 0
2024年Java秋招面试必看的 | MySQL调优面试题