野指针问题

野指针是没有指向地址的指针,也就是该指针指向的地址是随机的。

因为指针的指向地址是随机的,所以很有可能指向不可访问的弟子,导致程序崩溃,或者访问了不该访问的地址,导致影响其他功能使用

为了避免野指针,在进行指针初始化的时候要将指针指向NULL,即0地址,这样如果之后没有对指针指向,编译器也会报错

为了避免野指针,一般都会在使用前加判断语句 if(NULL != p) 目的是为了避免写成 = 号,在出错时会编译器会报错

const关键字和指针

const int * p 指针指向的是一个常量,即指向对象是被const修饰的

int const * p 和上面一样

int * const p 指针指向固定的地址,不可更改,即p是const的

const * int* p 指针指向固定的一个常量

数组

普通使用[] 数组类型int []

a a[0] &a &a[0]

&a是一个常量,不是变量所以是没办法做左值的

数组本质上是通过指针访问的,数组的下标只是编译器提供的一种简便方式,数组内部元素其实就是一块地址相连接的大小相同的内存空间

数据类型是什么

数据类型就是编译器解析对应内存中的数据的解析方式,也就是如何以二进制表达

指针的数据类型涉及到两个变量,一个是指针变量,另一个是指针所指向对象的变量

指针的数据类型都是相同的,即地址

指针前面的数据类型是指向对象的数据类型

负数在内存中是以补码的方式存在的

sizeof运算符

什么是运算符?

sizeof是c语言中的一个运算符,作用是返回括号中变量或数据类型占用的内存字节数

strlen 是一个函数,检查的是字符串的长度

函数中的形参实际上是对实参的内存拷贝,所以函数中对参数的改变是无法影响到实参的,不过变量可以通过地址访问,通过传递指针变量,可以将想改变的变量的地址传入函数,通过地址间接改变变量的值,同样的,如果想要改变参数指针指向的地址,则需要将指针的地址传入函数,即需要一个二级指针完成 增补:

代码段的字符串是不可以修改的,所以当使用使用指向字符串的指针作为参数更改时会触发段错误

const 在参数中的主要作用是增加在阅读代码中的意识,使用const修饰的参数一定是输入型的,是不可被更改的,例如strcpy的第二个参数,而且这样设计可以避免程序在运行时出错,因为修改该变量在编译阶段就会报错

在进行强制类型转换时,改变的不是内存中的数据,改变的是读取对象解析数据的方法

字符串存储在代码段,是不可以被改变的,所以当使用指针访问字符串时,无法改变字符串的字符,而在使用数组时,数组会将字符串拷贝到自己的内存空间内,所以开起来就是使用数组可以进行字符串的更改

c语言普通变量间接访问,C语言学习笔记-指针相关推荐

  1. unity3D-游戏/AR/VR在线就业班 C#入门访问修饰符学习笔记

    unity3D-游戏/AR/VR在线就业班 C#入门访问修饰符学习笔记 点击观看视频学习:http://edu.csdn.NET/lecturer/107 访问修饰符 public --公共的,在哪里 ...

  2. c语言中变量加1,c语言中,指针加1的情况.指针变量详细介绍

    指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址. 要搞清一个指针需要搞清指针的四方面的内容: 指针的类型, 指针所指向的 类型, 指针的值或者叫指针所指向的内存区, 还有指针本身所占 ...

  3. c语言各种变量的优缺点,C语言优缺点

    C语言优缺点 C语言跟别的语言比是最基础的,学单片机就是要先好C语言,以下是关于C语言优缺点,欢迎阅读! 1. 简洁紧凑.灵活方便 C语言一共只有32个关键字,9种控制语句,程序书写形式自由,主要用小 ...

  4. c语言数字灵活多变的访问形式_学习C语言你必须知道的事儿!

    是新朋友吗?记得先点蓝字关注我哦- 今日课程菜单 Java全栈开发 | Web前端+H5 大数据开发 | 大数据分析  人工智能+Python | 人工智能+物联网 有听过这样一段话: 在编程界,C语 ...

  5. c语言中变量的大小,C语言变量定义

    C语言变量定义 程序设计就是让计算机按照一定的指令来进行工作,可以说数据的处理是程序设计的主要任务.那么数据是怎么加入到计算机的内存中呢?下面是小编分享的C语言变量定义,欢迎大家阅读!更多相关信息请关 ...

  6. C语言结构体变量和结构体数组-学习笔记(十六)

    一.结构体变量 1.结构体概念 将不同类型的数据组合成一个有机的整体即为结构体.结构体由许多组织在一起的数据项组成,这些数据项不需要属于同一类型. 2.结构体类型及结构体变量定义 (1)结构体类型声明 ...

  7. C语言学习笔记——指针章节

    学习小结 c语言指针学习笔记汇总 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h>//指针 //在计算机科学中,指针是编程语言的一个对 ...

  8. C语言学习笔记---指针

    C语言要玩的好,指针是核心,但是指针在学习的时候看教程往往感觉一看就明白,但是实际用的时候一用就错,而且还不知道错在哪.为了更加深刻的了解指针,将学习过程记录下来,依次加深对指针的理解. 先看看一段测 ...

  9. Go语言核心36讲(Go语言实战与应用十二)--学习笔记

    34 | 并发安全字典sync.Map (上) 我们今天再来讲一个并发安全的高级数据结构:sync.Map.众所周知,Go 语言自带的字典类型map并不是并发安全的. 前导知识:并发安全字典诞生史 换 ...

最新文章

  1. UITableView(UIScrollView)滑动到底部的判断
  2. 线性表的C/C++实现(数据结构 严蔚敏版)
  3. zabbix的安装监控windows,linux操作流程
  4. php如何控制用户对图片的访问 PHP禁止图片盗链
  5. 梅西精彩过人绝技,太帅了!
  6. XBOX Series X规格如此强悍,如果被破解安装了win10,将对PC行业带来什么影响?
  7. 武汉工程大学计算机网络真题,2017年武汉工程大学计算机科学与工程学院836计算机网络考研导师圈点必考题汇编...
  8. 算法笔记_面试题_数组/链表/跳表/各种数据结构复杂度对比
  9. 数学建模遗传算法Matlab
  10. 简易记事本android代码,Android实现简易记事本
  11. 年轻人,不要太浮躁,静下心来听听【钢琴曲】
  12. 2021智能零售领域最具商业合作价值企业盘点
  13. 3D打印机可以打印什么?
  14. 真正的Windows XP SP2上海政府版
  15. 推荐一些好的英语python书籍知识点
  16. 【评测】Invent脂肪组织蛋白质快速提取
  17. 如何写一个魔方二维动态还原MATLAB仿真程序
  18. 紫禁繁花服务器维护,紫禁繁花跨服活动内容一览_紫禁繁花跨服活动详情_玩游戏网...
  19. laya游戏开发之贪吃蛇大作战(一)
  20. java开源项目源代码_java开源项目源代码

热门文章

  1. 承重柱怎么做_怎么区分农村自建房中的圈梁和承重梁?了解这几点
  2. r语言删除csv中na行_r语言,csv数据,提取特定行
  3. java query类是什么类_java – 从包生成QueryDsl Q类
  4. cii框架PHP,CII. POSIX Functions - PHP 5 中文文档
  5. 经常误提交.DS_Store文件怎么办?Git全局排除配置了解一下!
  6. 在一个大项目中,我选择了另一种JDK实现AdoptOpenJDK
  7. 皮一皮:来看看你是哪一档...
  8. 每日一皮:程序员职业服装!
  9. beamer插入图片_beamer中暗背景插入图片
  10. python 点的投影变换