IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言|指针的学习(一) -> 正文阅读

[C++知识库]C语言|指针的学习(一)

目录

???????

指针

二、定义指针变量(专门存放地址)

1.定义指针的一般形式

2.野指针

3.题目实练

总结


#include<stdio.h>
int main()
{
	int a=10;
    int *pc=&a;
	printf("%p\n", pc);
	printf("%d\n", *pc);
	return 0;
}

得出结果:


指针

指针是c语言学习过程中的一个很重要,又比较难的知识点,需要我们花比较多的时间去搞懂它。


一、指针是什么?

1、指针是内存中一个最小单元的编号,也就是地址,常量。

2、口头上的指针,一般指指针变量,是用于存放内存地址的变量。

(即:指针就是地址,口头上的指针通常指指针变量)

*指针的大小在32位平台是4个字节,在64位平台是8个字节。

*内存单元的指针和内容是不同的概念。就比如去银行取钱,银行账户就是指针,取出来的钱就是内容。

二、定义指针变量(专门存放地址)

1.定义指针的一般形式

类型说明符? *指针变量名

int *p1;
flaot *p2;
char *p3;
指针的类型决定对指针解引用时能操作几个字节。

2.野指针

概念: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)
出现野指针的原因:①指针没有初始化。②指针越界访问。

3.题目实练

1、关于指针的概念,错误的是:( )

A.指针是变量,用来存放地址

B.指针变量中存的有效地址可以唯一指向内存中的一块区域

C.野指针也可以正常使用

D.局部指针变量不初始化就是野指针

【C】?

A:正确,指针变量中存储的是一个地址,指向同类型的一块内存空间

B:正确,地址是唯一的,一个指针变量中只能存储一个地址。

C:野指针指向的空间时非法的,或者说该指针指向的空间已经不存在了,因此野指针不能使用

D:局部指针变量没有初始化时里面就是随机值,因此指向那个位置不一定,故将其看成是野指针。

这道题考察的就是我们对指针的一些基本概念的了解程度。

2、设已有定义:float x;则一下定义指针变量p并赋初值的语句中正确的是()。

A.float *p=1024

B.int *p=(float)x

C.float p=&x

D.float *p=&x

【D】注意要正确赋初值。?

关于给指针变量赋值有两种:

(1)定义的同时赋值

int a;
int *p=&a;

(2)先定义再赋值

int a;
int *p;
p=&a;

?[注意】指针变量只能存放地址,不能把整数赋值给指针变量。

int *p;
p=100;//不合法

3、以下系统中,int类型占几个字节,指针占几个字节,操作系统可以使用的最大内存空间是多大:( )

A.32位下:4,4,2^32 64位下:8,8,2^64

B.32位下:4,4,不限制 64位下:4,8,不限制

C.32位下:4,4,2^32 64位下:4,8,2^64

D.32位下:4,4,2^32 64位下:4,4,2^64

【C】在32位系统下,int类型占4个字节,指针占4个字节,最大内存空间2^32?

? ? ? ? ? 在64位系统下,int类型占4个字节,指针占8个字节,最大内存空间2^64

?4、若有定义语句:double *p,a;则能正确赋值并通过scanf语句给输入项读入数据的程序段是()。

A.*p=&a;scanf("%lf",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%lf:,*p);

D.p=&a;scanf("%lf",p);

【D】 double类型是双精度,所以用%lf。根据前面说的赋值,就是先定义后赋值的类型,就是p=&a。scanf("%1f",p)表示用键盘输入的数赋给指针变量p所指向的地址单元中。

总结

? ? ? ?以上就是今天要讲的内容,本文仅仅简单介绍了指针的概念性的东西。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 20:38:17  更:2022-09-24 20:39:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 12:20:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码