c语言中数组的概念及作用,详解C语言中的指针与数组的定义与使用
指针的特点
他就是内存中的一个地址
指针本身运算
指针所指向的内容是可以操作的
操作系统是如何管理内存的
栈空间
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语言中的指针与数组的定义与使用相关推荐
- linux文件目录:Linux中各目录(文件夹)作用详解(持续更新)
进入Linux系统,我们就是畅游在各种目录文件中,毕竟Linux是"文件系统",文件的存放就是在目录下面,那我们了解下"Linux中各目录(文件夹)作用详解"还 ...
- c语言数据类型int的用法,C语言基本数据类型:整型(int)用法详解|C语言学习
C语言基本数据类型:整型(int)用法详解 1. 整型 int C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int 是整型之一,一般被称为整型.以后, ...
- 电路中滤波电容和退耦电容_详解电源滤波电路中的高频滤波电容电路
图2-12所示是电源滤波电路中的高频滤波电路.电路中,一个容量很大的电解电容C1(2200µF)与一个容量很小的电容C2(0.01µF)并联,C2是高频滤波电容,用来进行高频成分的滤波,这种一大一小两 ...
- STM32中stm32f0xx_flash.icf文件的作用详解!
每个芯片开发商都会针对每款芯片来编写一个.icf文件就是传说中的链接文件.对于基本的应用,这个.icf文件足以满足你的工程需要.但有时也会需要改动,比如当你的项目要添加外部RAM时就要修改一下icf. ...
- Maven学习(1)-----概念,作用详解,配置
简介 maven意思为"知识的积累",是一款跨平台管理工具,服务主要基于java平台的项目构建,依赖管理和项目信息管理. 故事:张三和李四同一天开了卤肉店,张三的店成了百年老店而李 ...
- 在linux中hdparm作用,详解Linux系统中hdparm硬盘检测工具的使用
在linux下可以使用hdparm工具查看硬盘的相关信息或对硬盘进行测速.优化.修改硬盘相关参数设定.我主要常用这个工具来测试硬盘速度. hdparm(hard disk parameters) 功能 ...
- python中unicode编码怎么用_详解Python2.x中对Unicode编码的使用
我确定有很多关于Unicode和Python的说明,但为了方便自己的理解使用,我还是打算再写一些关于它们的东西. 字节流 vs Unicode对象 我们先来用Python定义一个字符串.当你使用str ...
- 详解c语言main函数、printf函数、scanf函数与va家族
C语言入门与提升(1)--详解c语言main函数.printf函数与scanf函数,与va家族 前言: 为什么要学习C语言呢?C语言作为最古老的语言之一,走过了半个多世纪的风风雨雨,至今仍然长盛不衰, ...
- android中怎么网络判断,Android中判断网络是否连接实例详解
Android中判断网络是否连接实例详解 在android中,如何监测网络的状态呢,这个有的时候也是十分重要的,方法如下: public class ConnectionDetector { priv ...
最新文章
- 刻意练习:LeetCode实战 -- Task20. 对称二叉树
- SAP Spartacus lock focus Directive的工作原理示意图
- mathtype运行时错误48_在office中无法使用MathType该怎么办?
- Java网络01基本网络概念
- 如何开始使用任何类型的数据? - 第1部分
- [转]浅谈MS-SQL锁机制
- 父组件传递值给子组件(一)
- redis原理及实现
- java go md5_Go语言中三种不同md5计算方式的性能比较
- idea快速生成SpringBoot项目无法启动问题
- 银联的bankall_gmc银联接口开发demo
- easyui java下拉列表项目_EasyUI/TopJUI之如何动态改变下拉列表框ComboBox输入框的背景颜色...
- POJ题目分类(转)
- 【GZH逸佳君】简约ppt模板-答辩ppt模板-毕业季ppt模板-说课ppt模板-ppt模板免费下载-ppt模板下载免费版
- Scrapy项目(东莞阳光网)---利用CrawlSpider爬取贴子内容,不含图片
- ieeetran_IEEEtran BibTex样式
- kvm文档翻译-第六章
- php 自己画地图,绘制自己的独家地图
- android渠道首发规则,酷传推广标准手册-android渠道首发规则.doc
- 分数四则运算 python
热门文章
- opencv复杂变换cvPyrDown [6]
- java1.8输出语句_[【小白学Java——干货】1.初学Java,认识语法、变量与输出语句...
- grep 判断不是正则的_Shell—正则表达式(grep命令、sed工具)
- 无线鼠标可以强制配对_酷冷至尊MM831三模游戏鼠标评测
- java实现定时任务 schedule_详解java定时任务
- 网络摄像头转usb接口_Arduino + USB Host Sheild 实现USB鼠标转PS/2接口
- linux配置apache不管用,Linux中apache配置文件详解
- 设计灵感|高饱和渐变创意海报设计作品,值得学习
- C4D双十一促销海报模板,参考一下!
- ibm服务器维修站点,IBM 服务器维修