指针的特点

他就是内存中的一个地址

指针本身运算

指针所指向的内容是可以操作的

操作系统是如何管理内存的

栈空间

4M~8m的大小

当进入函数的时候会进行压栈数据

堆空间

4g的大小 1g是操作系统

全局变量

内存映射

可以对内存的内容修改修改硬盘的内容

一般在数据库中经常使用

内存的分配与释放

c语言分配内存的方法

// malloc(需要分配的大小); 这里的分配的大小需要对齐的2的指数

void *mem = malloc(size);

释放内存

// 一般分配的内容都是在堆空间中的

// 如果使用完不去释放会照成内存泄漏和野指针的出现

free(men);

什么是内存泄漏:

不断的向系统

申请内存申请的内存不用,也不去释放

绝对不允许内存泄漏

什么是野指针

这个指针已经被释放掉了

别人又创建了这个指针

过去的自己又用到了这个指针

函数指针

返回值类型(*指针变量名)(参数列表);

int func(int x); // 声明一个函数

int (*f)(int x); // 声明一个函数指针

f = func; // 将func函数的首地址赋值给指针f

#include

int sum (int a, int b)

{

return (a+b);

}

int main(int argc, int *argv[])

{

// 定义一个函数指针

int (*f) (int, int);

// f 指向 sum函数

f = sum;

// 执行f函数,相当于执行sum函数

int f_sum = f(2,3);

printf("f_sum: %d\n", f_sum);

return 0;

}

指针就是内存地址: void*、 char*

数组就是:char c[2]、 int arr[10],指连续相同类型的空间

#include

#include

int main(int argc, char *argv[])

{

// 定义两个int类型的指针

int *a, *b;

// 通过malloc在堆里面开辟了空间

a = (int*)malloc(sizeof(int));

b = (int*)malloc(sizeof(int));

*a = 1;

*b = 2;

// 指针a的地址是&a, a是指向空间的地址,*a是指向空间的值

printf("addr of a:%p, %p, %d\n", &a, a, *a);

printf("addr of b:%p, %p, %d\n", &b, b, *b);

return 0;

}

#include

#include

int main(int argc, char *argv[])

{

// 创建一个数组c里面有3个数据,int类型的数组一个数组占4个字节,地址相关的空间相差是1个字节

int c[3] = {1,2,3};

printf("c的地址:%p\t%p\tc[0]:%p\tc[1]:%p\tc[2]:%p\t\n",c, &c, &c[0], &c[1], &c[2]);

printf("%d, %d, %d\n", c[0], c[1], c[2]);

}

总结

以上所述是小编给大家介绍的C语言中的指针与数组的定义与使用,希望对大家有所帮助!

c语言中数组的概念及作用,详解C语言中的指针与数组的定义与使用相关推荐

  1. linux文件目录:Linux中各目录(文件夹)作用详解(持续更新)

    进入Linux系统,我们就是畅游在各种目录文件中,毕竟Linux是"文件系统",文件的存放就是在目录下面,那我们了解下"Linux中各目录(文件夹)作用详解"还 ...

  2. c语言数据类型int的用法,C语言基本数据类型:整型(int)用法详解|C语言学习

    C语言基本数据类型:整型(int)用法详解 1. 整型 int C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int 是整型之一,一般被称为整型.以后, ...

  3. 电路中滤波电容和退耦电容_详解电源滤波电路中的高频滤波电容电路

    图2-12所示是电源滤波电路中的高频滤波电路.电路中,一个容量很大的电解电容C1(2200µF)与一个容量很小的电容C2(0.01µF)并联,C2是高频滤波电容,用来进行高频成分的滤波,这种一大一小两 ...

  4. STM32中stm32f0xx_flash.icf文件的作用详解!

    每个芯片开发商都会针对每款芯片来编写一个.icf文件就是传说中的链接文件.对于基本的应用,这个.icf文件足以满足你的工程需要.但有时也会需要改动,比如当你的项目要添加外部RAM时就要修改一下icf. ...

  5. Maven学习(1)-----概念,作用详解,配置

    简介 maven意思为"知识的积累",是一款跨平台管理工具,服务主要基于java平台的项目构建,依赖管理和项目信息管理. 故事:张三和李四同一天开了卤肉店,张三的店成了百年老店而李 ...

  6. 在linux中hdparm作用,详解Linux系统中hdparm硬盘检测工具的使用

    在linux下可以使用hdparm工具查看硬盘的相关信息或对硬盘进行测速.优化.修改硬盘相关参数设定.我主要常用这个工具来测试硬盘速度. hdparm(hard disk parameters) 功能 ...

  7. python中unicode编码怎么用_详解Python2.x中对Unicode编码的使用

    我确定有很多关于Unicode和Python的说明,但为了方便自己的理解使用,我还是打算再写一些关于它们的东西. 字节流 vs Unicode对象 我们先来用Python定义一个字符串.当你使用str ...

  8. 详解c语言main函数、printf函数、scanf函数与va家族

    C语言入门与提升(1)--详解c语言main函数.printf函数与scanf函数,与va家族 前言: 为什么要学习C语言呢?C语言作为最古老的语言之一,走过了半个多世纪的风风雨雨,至今仍然长盛不衰, ...

  9. android中怎么网络判断,Android中判断网络是否连接实例详解

    Android中判断网络是否连接实例详解 在android中,如何监测网络的状态呢,这个有的时候也是十分重要的,方法如下: public class ConnectionDetector { priv ...

最新文章

  1. 刻意练习:LeetCode实战 -- Task20. 对称二叉树
  2. SAP Spartacus lock focus Directive的工作原理示意图
  3. mathtype运行时错误48_在office中无法使用MathType该怎么办?
  4. Java网络01基本网络概念
  5. 如何开始使用任何类型的数据? - 第1部分
  6. [转]浅谈MS-SQL锁机制
  7. 父组件传递值给子组件(一)
  8. redis原理及实现
  9. java go md5_Go语言中三种不同md5计算方式的性能比较
  10. idea快速生成SpringBoot项目无法启动问题
  11. 银联的bankall_gmc银联接口开发demo
  12. easyui java下拉列表项目_EasyUI/TopJUI之如何动态改变下拉列表框ComboBox输入框的背景颜色...
  13. POJ题目分类(转)
  14. 【GZH逸佳君】简约ppt模板-答辩ppt模板-毕业季ppt模板-说课ppt模板-ppt模板免费下载-ppt模板下载免费版
  15. Scrapy项目(东莞阳光网)---利用CrawlSpider爬取贴子内容,不含图片
  16. ieeetran_IEEEtran BibTex样式
  17. kvm文档翻译-第六章
  18. php 自己画地图,绘制自己的独家地图
  19. android渠道首发规则,酷传推广标准手册-android渠道首发规则.doc
  20. 分数四则运算 python

热门文章

  1. opencv复杂变换cvPyrDown [6]
  2. java1.8输出语句_[【小白学Java——干货】1.初学Java,认识语法、变量与输出语句...
  3. grep 判断不是正则的_Shell—正则表达式(grep命令、sed工具)
  4. 无线鼠标可以强制配对_酷冷至尊MM831三模游戏鼠标评测
  5. java实现定时任务 schedule_详解java定时任务
  6. 网络摄像头转usb接口_Arduino + USB Host Sheild 实现USB鼠标转PS/2接口
  7. linux配置apache不管用,Linux中apache配置文件详解
  8. 设计灵感|高饱和渐变创意海报设计作品,值得学习
  9. C4D双十一促销海报模板,参考一下!
  10. ibm服务器维修站点,IBM 服务器维修