首页 > 其他分享 >c语言九(1) 指针

c语言九(1) 指针

时间:2022-10-13 14:55:28浏览次数:41  
标签:p2 p1 语言 int 地址 printf 指针

指针

/初探指针

1.内存

​ 计算机中的最小单位是 bit位

最小的存储单位为byte 字节(一个字节=8位)

​ 运行的软件,游戏,程序都是在内存中

​ 一个正在运行的程序我们称之为进程

2.变量

​ 2.1定义变量

​ 类型名 变量名

​ 2.2引用

​ 使用变量名就是在使用变量名绑定的内存段

3.地址与首地址

​ 地址:在计算机中每一个字节都有一个与之相匹配的编号

​ 首地址:变量的第一个地址就是首地址

4.指针:首地址就是指针

​ 在内存中我们的地址是连续的,所以意味着知道了变量的首地址和类型,就可以确定对应内存的值,所以我们把首地址称之为指针.

5.指针变量

​ 如果我们再次的开辟内存,用来保存指针,我们就把这个开辟的内存绑定的变量称之为指针变量.

6.指针大小

​ 操作系统和编译器 操作系统决定上线

​ 编译器决定了你当前所用的环境

​ 32个0 最大32个1 0-32个1

​ 64个0 最大64个1 0-64个1

​ 编译器环境有关: 4字节32(x86) 8字节64位(x64)

printf("int *=%d\n",sizeof(int *));

7.解引用

​ 知道变量名p,就知道p绑定的内存段中保存的地址&x,就能够去操作&x指向的内存段

int x =10086;
int *p=&x;     //这里的*号和int组成的意思是: 一个int类型的指针,而名字为p
*p=100;				//这里的*号则为解引用,利用名字p去操作关于p所表达的内存段中
					//保存的地址&x所指向的内存段
printf("%d\n",x);

8.野指针

​ 指针指向未知的内存段,我们把这样的指针称之为野指针.

int *p=10086;
*p=100;  //2.因为没有修改的权利
printf("%d",*p);  //3.若强行运行,输出结果空白
//1.ctrl+f5运行失败....这是野指针

9.空指针

int *p=NULL;NULL/0/空
//空指针的作用主要是:程序员代码敲得多,可能导致某指针不经意间废了,导致内存泄漏
int x=10086;
int *p=NULL;
p=&x;
if(NULL!=p)
{
    *p=100;
}
else
{
    printf("这是一个空指针!\n");
    return 0;
}
printf("%d\n",*p);

10.万能指针

​ void* 定义的指针变量,就是我们常说的所谓的万能指针

11.多级指针

int x=10086;
int *p=&x;			//p是x变量的首地址
					//*p表示x变量对应的值

int **p1=&p;		//p1是p指针的首地址
					//*p1是x变量的首地址
					//**p表示x变量对应的值

int ***p2=&p1;		//p2是p1指针的首地址
					//*p2是p指针的首地址
					//**p2是x变量的首地址
					//***p2表示x变量对应的值
printf("x=%d\n",x);
printf("&x=%d\n",&x);
printf("p=%d\n",p);
printf("*p=%d\n",*p);
printf("p1=%d\n",p1);
printf("*p1=%d\n",*p1);
printf("**p1=%d\n",*p1);
printf("p2=%d\n",p2);
printf("*p2=%d\n",*p2);
printf("**p2=%d\n",**p2);
printf("***p2=%d\n",***p2);

12.指针的骚操作

标签:p2,p1,语言,int,地址,printf,指针
From: https://www.cnblogs.com/CzzA/p/16788151.html

相关文章

  • c语言七 字符与其数组,函数
    字符串与字符数组字符数组定义chararray[1000];字符数组初始化chararray[100]={'a','b','c','d'};chararray[100]="abcd";chararray[100]={0}; //但凡为......
  • 221013初学C语言笔记
    把Test()强制类型转换成int(*)() 函数指针,再解引用而Test()函数本身就是int型而Test函数名是一个指针。......
  • 实验1 C语言开发环境使用和数据类型、运算符、表达式
    实验任务一 #include<stdio.h>intmain(){printf("O\n");printf("<H>\n");printf("II\n");printf("\n");printf("O\n");print......
  • R语言中数据结构知识补充以及常见错误习惯
    读书笔记:R语言中数据结构基础知识补充R语言中常见错误习惯大小写使用错误,函数名的大小写不同表示的功能也不同。引号使用错误,R包的名称前后需要引号包围,否则报错。......
  • vscode配置C语言
    1、下载编译器MinGW并解压即可下载下载页面中选择x86_64-win32-seh下载添加环境变量:在系统变量的PATH中添加bin文件夹2、安装插件因最新版本不会自动生成l......
  • C语言程序设计第五版 谭浩强 第五版课后答案
    谭浩强C程序设计第五版第五版课后答案​点我看视频讲解+可运行源码记得一键三连哦​c程序设计第一章1.什么是程序?什么是程序设计?程序:就是一组能识别和执行的指令,每一条......
  • C语言基于单链表的词典软件
    C语言基于单链表的词典软件实验1:日期:2022-10-4类型:设计型题目:基于单链表的词典软件内容:利用单链表存储词典,可以实现从文件中加载数据、查询单词、添加词条、删除词条......
  • 计算机语言
    ComputerLanguagesAcomputermustbegiveninstructionsinalanguagethatitunderstands,thatis,aparticularpatternofbinarydigitalinformation.必......
  • GO语言基本数据类型
    Go语言-程序实体与关键字任何Go语言源码文件都由若干个程序实体组成的。在Go语言中,变量、常量、函数、结构体和接口被统称为“程序实体”,而它们的名字被统称为“标识符”。......
  • c语言实现继承、封装、多态
    c语言实现多态,点击进入主要内容:多态:利用设计和实现一个易于扩展的系统;c++中多态指:具有不同功能的函数可以用同一个函数名,这样可以用一个函数名调用不同内容的函数;静态多......