2024-2-28-网络基础作用

1>思维导图

2>面试问题

I、

(1)什么是回调函数?

回调函数是作为参数传递给其他函数的函数。通过函数指针,例如异步编程、线程的创建函数。

(2)结构体与共用体的区别:

结构体是一种数据结构,其成员占用不同的内存空间,共用体是一种特殊的结构体,其所有成员共享同一块内存空间,用于节省内存。

结构体的大小是各个成员所占内存之和,共用体大小是以成员中最大成员为主。

(3)赋值与初始化有什么不同?

赋值是将变量的值赋给另一个变量,初始化是将定义变量时给变量初始赋值。

(4)局部变量和全局变量能否重命?

能,因为局部变量作用域只在函数内部,在函数内,局部变量会覆盖掉全局变量不会影响全局变量。

如果想在函数内调用全局变量,可以用extern声明外部全局变量。

#include <stdio.h>

int num= 10; // 全局变量

int main() {
    extern int num; // 声明外部全局变量

    printf("num= %d\n", num); // 使用外部全局变量

    return 0;
}

(5)形参和实参有什么区别?

形参是函数定义时的参数,实参是函数调用时传递给形参的值。

形参是函数内部的局部变量,实参是传递给函数的具体值。

形参只能是变量,实参可以是变量、表达式、常量。

II、

(1)数组与指针的区别是什么?

数组是构造数据类型,是一种数据结构,在内存中占用连续的空间;指针是指针类型,它在内存中占8B或4B

数组需要直接通过下标访问元素;指针需要通过解引用操作符*来访问指针指向的值。

数组名表示数组首元素地址、数组名做参数传给函数时,可以将数组名视为指向其首元素的指针;指针可以指向任意类型的数据,包括基本类型、结构体、指针。

数据的大小是固定的,一旦声明,其大小不能改变;指针本身的大小是固定的,但它可以指向任意大小的内存块

数组如果是局部数组,其生命周期与其所在的函数一致;如果是全局数组或静态数组,其生命周期与程序一致;指针变量的生命周期取决于其声明的位置(局部或全局),但指针所指向的内存可以是动态分配的,其生命周期可以通过malloc和free来控制。

(2)void指针就是空指针吗?它有什么作用?

空指针时(void*)0,void指针是通用类型指针,可以执行任意类型的数据。

void指针不能直接解引用,必须先转换为具体的指针后再使用。

(3)简述快速排序的思想

从待排序列中选择基准值(默认是数列的第一个),拿基准值一次和序列的每一个元素进行比较

如果大于基准值防止后边,小于基准值放在前边,分成两个子序列,确定基准值的位置,分成两个子序列,重复以上过程,直至序列为有序序列

(4)什么是野指针,如何避免野指针

创建指针时没有给指针指向,即对指针的非法访问。

在创建指针时,要对还没有明确指向的指针赋值为NULL。

在用指针对数组进行操作时,注意别越界。

在申请动态堆区空间后,回收时记得将指针赋值为NULL。

注意指针指向局部变量时,不能超过其作用域使用。

(5)网络7层体系结构

物理层、数据链路层、网络层、运输层、会话层、表示层、应用层

TCP/IP:网络接口层、网际层、运输层、应用层

学习:物理层、数据链路层、网络层、运输层、应用层

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值