【C语言】指针经典笔试题(上)

C语言的一大重头戏就是指针。

对于指针有一些认识:

1.指针是存放变量的地址,一般说的指针和指针变量是一个概念。

2.地址的单位是字节,大小在不同编译器环境下有所不同,32位机器是4个字节,64位机器是8个字节。

3.数组名是首元素的地址,有俩个例外,sizeof(arr)和&arr,这俩个的数组名都是整个地址。吗,

4.指针类型的作用:解引用时可以访问多少个字节。

int指针类型可以访问4个字节

char指针类型可以访问1个字节(可以来求大小端)

下面是一些sizeof的计算。【注意:sizeof不是一个函数,是一个操作符,能计算括号内的字节大小】

首先定义了一个数组,数组中有5个元素。

1.sizeof(a)

这里的数组名a是俩种特殊情况之一,所以是代表整个数组,也就是求整个数组的字节大小。

这个数组中有5个元素,每个元素都是int类型(4个字节),所以答案是4*5等于20

2.sizeof(a+0)

因为不是那俩种特殊情况,所以这里的a是首元素地址,+0还是首元素,一个地址的大小就是4/8.
3.sizeof(*a)

对首元素地址解引用,相当于是取出了a[0],一个整形的字节是4,所以答案是4
4.sizeof(a+1)

首元素地址跳过一个单位,会到a[1]的位置,所以求的是a[1]地址大小,一个地址的大小也就是4/8.
5.sizeof(a[1])

求一个整形的大小,答案是4
6.sizeof(&a)

&a代表整个数组的地址,但也还是个地址,地址的大小4/8
7.sizeof(*&a)

*和&可以抵消,相当于是sizeof(a),a这里代表整个数组,所以答案是4*5==20
8.sizeof(&a+1)

&a取出整个数组的地址,然后+1表示跳过整个数组,会跳到数组最后一个元素的下一个元素地址,只要是地址,答案还是4/8
9.sizeof(&a[0])

求a[0]的地址大小,答案是4/8
10.sizeof(&a[0]+1)

求a[1]的地址大小,答案是4/8

相关推荐
南境十里·墨染春水5 小时前
C++传记(面向对象)虚析构函数 纯虚函数 抽象类 final、override关键字
开发语言·c++·笔记·算法
无巧不成书02185 小时前
30分钟入门Java:从历史到Hello World的小白指南
java·开发语言
2301_797172755 小时前
基于C++的游戏引擎开发
开发语言·c++·算法
比昨天多敲两行7 小时前
C++ 二叉搜索树
开发语言·c++·算法
Birdy_x7 小时前
接口自动化项目实战(1):requests请求封装
开发语言·前端·python
海海不瞌睡(捏捏王子)7 小时前
C++ 知识点概要
开发语言·c++
桌面运维家8 小时前
VLAN配置进阶:抑制广播风暴,提升网络效率
开发语言·网络·php
蓝凌y8 小时前
51单片机之外部中断
c语言·单片机·嵌入式硬件
AF_INET68 小时前
RV1126B开发板学习篇(二)v4l2+mpp编码
c语言·经验分享·音视频·视频编解码·嵌入式软件·rv1126b
一轮弯弯的明月8 小时前
Python基础-速通秘籍(下)
开发语言·笔记·python·学习