c语言手写指针和乘号,C-学会使用指针(示例代码)

先说:唯手熟尔

指针

指针存储着一个内存空间的地址

定义一个指针

int a;

int * p;

定义一个指针,只需在变量前面加一个 * 号。这里的指针只能存储一个存放整数的内存空间的地址

指针如何存储地址

p = &a;

&叫取地址符。这样整形指针p获得了整型变量a的地址。理解为指针p指向了整型变量a

可以通过指针p来操作变量a。

例如,输出变量a的值

int a=10;

int * p;

p=&a;

printf("%d",* p);

这里的 * 号是间接访问运算符。作用是取得指针p所指向的内存中的值。

C语言中 * 号有三个用途

乘号。加减乘除

声明指针变量。在定义指针变量时使用,如:int * p;

取得指针所指向的内存中的值。简介访问运算符。例如printf("%d",* p);

malloc函数

在内存中存储整数10

int a=10;

malloc(4);

使用malloc函数会从内存中申请分配指定字节大小的内存空间。此处申请的是4个字节。不知道int类型4个字节还可以通过sizeof(int)获取int类型所占字节数。申请好4个字节空间后,就需要用一个指针来指向这个空间。

int * p;

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

需要注意的是,malloc函数返回类型是void * 类型。void * 表示未确定类型的指针。在C语言和C++,可被强制转换为任何其他类型的指针。此处我们将其强制转化为整形指针

指针存储的是某空间地址,那为什么分不同类型的指针呢?

是为了让系统知道某空间应该取多少个连续内存作为一个数据。

例子

存储整数10的代码如下

#include

#include

int main()

{

int *p;

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

* p=10;

printf("%d",* p);

return 0;

}

为什么要用如此复杂的办法存储数据?

预先的方法我们必须预先准确的知道所需变量的个数,也就是说我们必须定义出所有变量。定义一百个,程序就只能存储一百个。通过malloc函数我们可以在程序运行的过程中根据实际情况来申请空间

最后:个人觉得指针和malloc函数谁都离不开谁。malloc申请的内存需要指针指示,而指针用来指示一个不确定的空间才发挥了真正作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

考后反思7.25

D1 考试时首先看的第一题,不会,然后看第二题,原题!!!! 第二题啥也没想,就只是打了一个tarjan判割点, 打完的时候有点慌,总觉得自己打错了什么,调了…

android getinstance 方法,Android中的'new Fragment()'和'Fragment.getInstance()'有什么区别?...

当我们片段添加到特定的布局,我们可以使用folloing码Fragment fragment new SampleFragment();FragmentManager fragmentManager getSupportFragmentManager();FragmentTransaction fragmentTransaction fragmentManager.beginTransaction();fragmentTransaction…

查找发布地图的 REST URL并查询相关信息

1、登录ArcGIS Server Manager 2、登录后,里面是以前自己发布的地图服务 3、点击自己发布的地图,然后按下功能选项,再点击箭头来找到URL 4、点击进去,分别能从红圈中找到相关的信息,分别为arcgis JavaScript&#xff0…

maven使用testng_使用Maven Failsafe和TestNG分别运行单元测试和集成测试

maven使用testng最近,对于我的新宠物项目,我决定我希望在标准mvn测试期间执行一些测试,而仅在不同阶段执行一些其他测试 ,我们称其为集成阶段。 我在谷歌上搜索,似乎没有任何工作,因此在努力使安装工作顺利…

android webview 重定向 goback,Android WebView 网址重定向影响 goBack

我们在使用 Android 自带的控件 WebView 访问某网址的时候, 网址会通过某些方式进行重定向. 这时会出现一个问题.我们在使用 Android 自带的控件 WebView 访问某网址的时候, 网址会通过某些方式进行重定向. 这时会出现一个问题.如下所示:你想要在 『A网址』 中打开 『C网址』, …

android 仿qq it蓝豹,《IT蓝豹》listview实现各种版面设计功能

本项目主要listview实现各种版面设计功能,有实现列表的,gridview效果的,有混排效果的等等。自定义TwoWayView继承RecyclerView,通过TwoWayView去根据布局实现到底选择哪一个效果,本项目来自:https://github…

AWS:启动安装了APOC的Neo4j实例

安装Neo4j之后,我要做的第一件事就是安装APOC库 ,但是我发现在AWS上旋转服务器时这是一个手动过程,所以我想简化一下。 已经有一个Neo4j AMI可以安装Neo4j 3.2.0 ,我的同事Michael指出,我们可以通过编写脚本并将其作为…

NOIP模拟测试8「寿司」

考试时打的类似$n^2$暴力,然后炸了只有10分 后来验证我的算法伪了。 题解 显然你有一种解法,假设你要在一个B点断开将R分别移向最左 最右,这样只用分别计算B点右面蓝色数量左面蓝色数量就得到了一个ans 这个题有一个很不显然的结论&#xff0…

glassfish hk2_使用GlassFish 3.1.2.2和Primefaces 3.4的JDBC领域和基于表单的身份验证

glassfish hk2我的博客上最受欢迎的帖子之一是有关JDBC安全领域和带有Primefaces的GlassFish上基于表单的身份验证的简短教程。 在收到有关它不再适用于最新的GlassFish 3.1.2.2的评论后,我认为可能是时候重新访问它并提出更新的版本了。 开始了: 制备 …

NOIP模拟测试8「匹配·回家」

匹配 哈希能A 水到爆炸 回家 事实上我做过一个原题,甚至比这个回家难的多,而且那个题多组询问必经点 然后我做一组询问就打炸了 大约就是删了很多东西,然后自己想的太简单了 直接统计了割点,懒得打lca和树上差分,懒得打…

将CloudWatch Logs与Cloudhub Mule集成

在此博客中,我将解释如何为您的Mule CloudHub应用程序启用AWS Cloudwatch日志 。 AWS提供了Cloudwatch Logs Services,以便您可以更好地管理日志。 它比松散便宜。 由于cloudhub会自动翻转超过100 MB的日志,因此我们需要一种机制来更有效地管…

android网络重试机制,okhttp源码解析(四):重试机制

前言这一篇我们分析okhttp的重试机制,一般如果网络请求失败,我们会考虑连续请求多次,增大网络请求成功的概率,那么okhttp是怎么实现这个功能的呢?正文首先还是回到之前的InterceptorChain:Response getResp…

构造入门

构造死磕 什么是构造 小学中学奥数先用数学解决再编程实现的构造题一般算法无法解决\(NOI\)难度\(PJ-\)代码量坑构造举例 CF743C Vladik and fractions 题目让我们构造一组数字,满足\(\frac{2}{n} \frac{1}{x} \frac{1}{y} \frac{1}{z}\)第一眼看到就想到听老师讲了半天才知…

王成录华为鸿蒙系统,华为手机销量仍在增长!华为王成录:手机会是鸿蒙OS系统的中心...

【天极网手机频道】由于制裁,华为遭到前所未有的断供,外界有不少声音都在担心华为手机出货量将会出现暴跌。不过昨日华为开发者大会举办期间,华为消费者业务软件部总裁王成录表示,华为手机销量仍在增长中。昨天的华为开发者大会&a…

28线程

进程:计算机执行的任务 线程:执行任务中的小任务 多线程 计算机再执行过程中,再同一时间只能让cpu的一个核执行一个进程。进程有多个线程构成,再同一时刻Cpu只能处理一个线程。 引入多线程 当线程被cpu执行时cpu开始工作&#xff…

什么是javax.ws.rs.core.context? [第3部分]

如何使用Context批注 在什么是javax.ws.rs.core.context的第2部分中? 您学习了如何使用Context批注从SecurityContext类的注入实例检索安全信息,以及如何通过ResourceContext实例使用JAX-RS资源类。 在本文中,您将学习如何将Context批注与请…

html 字幕飘动效果,html 滚动字幕 制作滚动字幕效果 参数

制作滚动字幕效果:marquee标签 如下:<MARQUEE directionup height146 οnmοuseοutstart() οnmοuseοverstop() scrollAmount4> </marquee>参数说明:direction滚动方向:up向上滚动&#xff0…

静态点分治总结

点分治是世界上最好的算法QwQ 点分治可以解决各种树上的边权点权问题,然后如果你发现这个题好像问的特别玄学,lca,树差都做不了,树上动‘龟’更做不了,只能暴力时,这个题大多数情况就是点分治了 点分治的思…

html节点上下移动,关于前端:数组元素上下移动

/*** 上、下挪动* param {number} code 下标* param {number} dir 1上移 0下移*/onMove(code, dir) {let moveComm (curIndex, nextIndex) > {let arr this.commodityInfoarr[curIndex] arr.splice(nextIndex, 1, arr[curIndex])[0]return arr}this.commodityInfo.some((…

mybatis插入数据后返回自增主键ID详解

1.场景介绍: ​ 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后返回的是插入成功的条数,那么这个时候我们想要得到相应的这条新增数据的ID,该怎…