C语言笔记之指针

news2025/3/14 20:48:00

一.指针含义

1.a、*a与&a的区别

a存储指向变量的地址,*a为指针的值,&a为指针的地址

#include <stdio.h>

int main(){
	/** 测试代码部分一 **/
	int a1=2;
	
	int *b1;
	
	b1=&a1;
	
	printf(" a1 = %d, &a1 = %d, b1 = %d, *b1 = %d, &b1 = %d\n\n",a1,&a1,b1,*b1,&b1);
	
	/** 测试代码部分二 **/
	
	int *a2;
	
	a2=&a2;
	
	printf(" a2 = %d, *a2 = %d, &a2 = %d\n\n",a2,*a2,&a2);
}

测试结果

二.指针用法

1.直接赋值方式

int *a = &value;

2.先定义后赋值

int *b;
b = &value;

3.分配内存后赋值

int *c = (int *)malloc(sizeof(int) * 1);
*c = value;

4.先定义、分配内存,最后赋值

int *d;
d = (int *)malloc(sizeof(int) * 1);
*d = value;
#include <stdio.h>

int main()
{
	/** 目标测试变量 **/
	int value = 42;

	/** 直接将指针赋值为变量的地址 **/
	int *a = &value;

	/** 先定义指针,再将地址赋值给指针 **/
	int *b;

	b=&value;// X 错误的写法--> *b=value;

	/** 先给指针分配好内存,然后赋值 **/
	int *c=(int *)malloc(sizeof(int)*1);

	*c=value; // √其他写法--> c=&value;

	/** 先定义指针.再分配内存,最后赋值 **/
	int *d;

	d = (int*)malloc(sizeof(int)*1);// X 错误的写法--> *d=(int*)malloc(sizeof(int)*1);

	*d=value;

	/** 各种情况的结果 **/
	printf("---------value初始值为%d,地址为%d---------\n\n",value,&value);
	
	/** a :42, &a :6487704, sizeof(a):4 **/
	printf("a 的值:%d, a 的地址为%d, a 所占的内存为%d\n\n", *a,&a,sizeof(a));

	/** b :42, &b :6487700, sizeof(b):4 **/
	printf("b 的值:%d, b 的地址为%d, b 所占的内存为%d\n\n", *b,&b,sizeof(b));

	/** c :42, &c :6487696, sizeof(c):4 **/
	printf("c 的值:%d, c 的地址为%d, c 所占的内存为%d\n\n", *c,&c,sizeof(c));

	/** d :42, &d :6487692, sizeof(d):4 **/
	printf("d 的值:%d, d 的地址为%d, d 所占的内存为%d\n\n", *d,&d,sizeof(d));

	/**对value的值进行加1**/
	value++;

	/** 观察value值增加后的变化 **/
	printf("---------在对value值进行加1后,各值的变化---------\n\n");

	/** a :43, &a :6487704, sizeof(a):4 **/
	printf("a 的值:%d, a 的地址为%d, a 所占的内存为%d\n\n", *a,&a,sizeof(a));

	/** b :43, &b :6487700, sizeof(b):4 **/
	printf("b 的值:%d, b 的地址为%d, b 所占的内存为%d\n\n", *b,&b,sizeof(b));

	/** c :42, &c :6487696, sizeof(c):4 **/
	printf("c 的值:%d, c 的地址为%d, c 所占的内存为%d\n\n", *c,&c,sizeof(c));

	/** d :42, &d :6487692, sizeof(d):4 **/
	printf("d 的值:%d, d 的地址为%d, d 所占的内存为%d\n", *d,&d,sizeof(d));

	return 0;
}

测试结果

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

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

相关文章

番外8.0 ---Linux服务器用户与组Task

Task0: 熟悉Linux用户的访问权限&#xff1b; 管理用户账户&#xff1b; 管理组&#xff1b; 使用用户管理器管理组和用户&#xff1b; 使用常用的账户管理命令&#xff1b; 批量新建账户&#xff1b; 项目情况&#xff1a;公司员工&#xff1a;60&#xff0c;部门&#xff1…

Python网络编程之Socket(套接字)

文章目录 一、Socket概念二、套接字的发展史及分类三、Socket的使用语法格式(基于TCP协议)1.基于TCP协议的套接字(socket)编程半连接池 2.基于UDP协议的套接字(socket)编程也可以使用服务端只接收客户端消息 黏包现象 一、Socket概念 Socket套接字&#xff0c;一种独立于协议的…

机器学习,神经网络中,自注意力跟卷积神经网络之间有什么样的差异或者关联?

如图 6.38a 所示&#xff0c;如果用自注意力来处理一张图像&#xff0c;假设红色框内的“1”是要考虑的像素&#xff0c;它会产生查询&#xff0c;其他像素产生 图 6.37 使用自注意力处理图像 键。在做内积的时候&#xff0c;考虑的不是一个小的范围&#xff0c;而是整张图像的…

力扣每日一题45:跳跃游戏

题目描述&#xff1a; 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返…

C语言实现// 输入一个英文句子,以‘ . ’结束,统计句子中包含的字符个数

完整代码&#xff1a; // 输入一个英文句子&#xff0c;以‘ . ’结束&#xff0c;统计句子中包含的字符个数 #include<stdio.h>int main(){char ch;int length0;printf("请输入一个英文句子\n");while (chgetchar()!.){length;}printf("字符个数是&…

Qt/C++开源作品45-CPU内存显示控件/和任务管理器一致

一、前言 在很多软件上&#xff0c;会在某个部位显示一个部件&#xff0c;专门显示当前的CPU使用率以及内存占用&#xff0c;方便用户判断当前程序或者当前环境中是否还有剩余的CPU和内存留给程序使用&#xff0c;在不用打开任务管理器或者资源查看器的时候直接得知当前系统的…

大模型,重构自动驾驶

文&#xff5c;刘俊宏 编&#xff5c;王一粟 大模型如何重构自动驾驶&#xff1f;答案已经逐渐露出水面。 “在大数据、大模型为特征&#xff0c;以数据驱动为开发模式的自动驾驶3.0时代&#xff0c;自动驾驶大模型将在车端、云端上实现一个统一的端到端的平台管理。”毫末智…

【线性表的查找,线性表插入,线性表的删除,线性表的链式表示和实现】

文章目录 线性表的查找线性表插入线性表的删除线性表的链式表示和实现1.单链表&#xff0c;双链表&#xff0c;循环列表2.头指针&#xff0c;头结点和首元结点3.链表的存储结构特点 线性表的查找 int LocateElem(Sqlist L,ElemType e){ //在线性表L中查找值为e的数据元素&…

jmeter(三十三):阶梯线程组Stepping Thread Group,并发线程Concurrency Thread Group

Stepping Thread Group参数详解 this group will start:表示总共要启动的线程数;若设置为 100,表示总共会加载到 100 个线程first,wait for:从运行之后多长时间开始启动线程;若设置为 0 秒,表示运行之后立即启动线程then start:初次启动多少个线程;若设置为 0 个,表示…

实验室设备modbus小结

背景&#xff1a; 大概花1个月&#xff0c;后端代码量再1W行多点&#xff0c;不同厂商的指令不同需要定制化开发。参与了设备的数据采集工作&#xff0c;当然常规的设备管理、权限就不重点展开。 都是物联网相关&#xff0c;但是还是有所不同。 之前做过海尔的U home相关的项目…

京东AIGC实战项目复盘;第一门AI动画系统课程;百川智能启动2024校园招聘;Kaggle 2023 AI前沿报告 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f525; 李彦宏宣布「文心大模型4.0」正式发布&#xff0c;并开启邀请测试 10月17日&#xff0c;李彦宏在百度世界2023上宣布「文心大模型4.0」…

微信小程序 —— 会议OA项目首页布局与Mock数据交互

14天阅读挑战赛如果世界上有奇迹&#xff0c;那一定是努力的另一个名字。 目录 一、小程序布局 1.1 Flex布局 1.2 Flex属性 二、OA会议首页搭建 2.1 首页底部菜单 2.2 创建后端结口 2.3 Mock模拟数据 2.4 首页轮播图搭建 2.5 首页内容搭建 一、小程序布局 1.1 Flex布…

SpringBoot+Mybatis实现多数据源+分页

1 主要依赖版本 &#xff08;1&#xff09;SpringBoot 2.7.8 &#xff08;2&#xff09;Mybatis 2.2.2 &#xff08;3&#xff09;Pagehelper 1.3.0 &#xff08;4&#xff09;MySQL 8.0.26 &#xff08;5&#xff09;Oracle 11.2.0.3 2 概述 &#xff08;1&#xff09;…

Linux内核8. 进程地址空间

进程地址空间也就是每个进程所使用的内存&#xff0c;内核对进程地址空间的管理&#xff0c;也就是对用户态程序的内存管理。 主要内容&#xff1a; 地址空间(mm_struct)虚拟内存区域(VMA)地址空间和页表 1. 地址空间(mm_struct) 地址空间就是每个进程所能访问的内存地址范围…

React高级特性之RenderProps

一、概念 renderProps是另外一个能实现类似于HOC这种多个组件抽离公共组件逻辑的方式。 二、例子 import React from react import PropTypes from prop-typesclass Mouse extends React.Component {constructor(props) {super(props)this.state { x: 0, y: 0 }}handleMouse…

日志技术快速入门

1、创建Maven项目 这里不再说如何创建Maven项目 2、导入相关依赖 <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.12</version></dependency>3、创建配置文件 在re…

Spring源码解析——事务增强器

正文 上一篇文章我们讲解了事务的Advisor是如何注册进Spring容器的&#xff0c;也讲解了Spring是如何将有配置事务的类配置上事务的&#xff0c;实际上也就是用了AOP那一套&#xff0c;也讲解了Advisor&#xff0c;pointcut验证流程&#xff0c;至此&#xff0c;事务的初始化工…

强化学习------Policy Gradient算法

目录 简介PG算法原理效果&#xff1a;参考 简介 之前的QLearning DQN Sarsa都是通过计算动作得分来决策的&#xff0c;我们是在确定了价值函数的基础上采用某种策略&#xff0c;即Value-Based&#xff0c;通过先算出价值函数&#xff0c;再去做决策。而Policy Gradient算法是一…

云计算:shell脚本

shell脚本&#xff0c;会极大减少重复性工作&#xff0c;缩短很大时间。 脚本每个人都可以不一样&#xff0c;只要实现就可以。 注意&#xff1a;要多思考&#xff0c;把思路锻炼好。以后就可以写各种程序。 shell语言 学完shell之后&#xff0c;对Linux理解更深刻&#xff…

在调试器下看微信[如何耗电]

在今天这样干什么都离不开手机的时代里&#xff0c;手机的待机时间太重要了。特别是对于我这个不喜欢带充电宝出门的人来说&#xff0c;一旦看到手机电量低于20%&#xff0c;立刻就精神紧张了&#xff0c;因为一切信息都在手机里&#xff0c;如果手机没电&#xff0c;那么就失联…