《每天一分钟学习C语言·十二》各种指针问题

news2025/4/26 5:43:31

1、

int arr;  
int * restrict pt = &arr;
*pt = 100;
*arr = 10;

注:restrict只能修饰指针,被restrict修饰的指针指向一块内存后这块内存就归这个指针管理了,其他任何指针都不能修改这块内存的内容,这是一个约定,当然实际上也可以被其他指针修改,但通常都会遵守这个约定。这里pt控制了这块内存,按道理不管arr为多少,最终值都是100,这是一个约定,但实际arr也能修改值,最终是10

2、
time函数

time_t time(time_t *timer)

time_t为long int型,参数为NULL返回从1970-01-01 00:00:00到现在的秒数

3、
返回值和参数为void *的各自作用

#include <stdio.h>
#include <string.h>

void * f(void * i)
{
	int * a = (int *)i;
	*a = 10;
	return (void *)a;
}

int main()
{
	int i = 3;
	int *arr = &i;
	void * b = f(arr);
	printf("%d\n", *(int *)b);

	return 0;
}

函数的参数为void *表示传入的参数可以为任意类型的地址,这里传入int *类型的arr,这时需要在函数内部做个强转把void *转为int *,return的时候可以return任何类型地址,如return (int *)a,在主函数接受这个返回地址时一定要用void *类型接收,不能用任意类型地址接收,不然会报错,然后可以把void *类型返回值强转其他类型打印

4、
#define MAX extern 宏定义MAX为extern,此时MAX就是extern
MAX int i; //相当于extern int i;

5、

#define PT  0x1001H
typedef struct {
	int i;
	double j;
}st;
#define P  ((st *)PT)  

PT强转为一个结构体指针,该指针的地址为0x1001H,此时P表示PT,P->i等价于PT->i,因为PT为结构体指针,所以PT的地址为结构元素的第一个元素的地址

6、
定义一个枚举

typedef enum {
M, T, W, S, F
}day;

day d = W;
Printf(%d\n”, d);  //2
//也可以直接输出枚举的值,不需要赋值
Printf(%d\n”, F);  //4

7、
函数与函数局部变量不能共用,比如在main函数里有个布局变量int i=3,mian函数内部还有个函数f(),那么在f()函数内部就不能使用main的局部变量i,若要使用可以在函数外部定义全局变量

8、
头文件stdlib.h
system(“pause”); //暂停程序

9、
long类型在windows占4个字节,linux 32位4字节,linux 64位8字节

10、
char *arr[10] = {“huang”, “hhh”}; //指针数组,每个元素是一个字符串,前两个元素都有字符串常量区赋了地址, 后八个元素默认是给指针初始化,地址赋值给NULL,空指针不可读,故printf(“%s\n”, arr[2]); 会中断报错,如果是一个值都没有赋,char *arr[10]; 那每个元素都是野指针,只要给数组赋了一个值,其他没有赋值的元素都会默认初始化。

在这里插入图片描述

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

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

相关文章

备份和容灾讲解

备份和容灾 &#xff08;1&#xff09;容灾&#xff08;容许灾难的发生&#xff09;是一种架构方案&#xff0c;包括了很多方案&#xff0c;如下 本地高可用 双活&#xff08;特指存储&#xff0c;可以理解为两端同时对外提供服务&#xff09;&#xff1a;通过一个双写模块把…

20240115-插入删除 GetRandom O(1)

题目要求 实现 RandomizedSet 类&#xff1a; RandomizedSet() 初始化 RandomizedSet 对象。bool insert(int val) 将不存在的项目 val 插入随机集合。如果项目不存在&#xff0c;则返回 true&#xff0c;否则返回 false。bool remove(int val) 从集合中删除项目 val&#xf…

文理导航期刊投稿方式

《文理导航》杂志系国家新闻出版总署批准&#xff0c;内蒙古自治区文旅厅主管&#xff0c;内蒙古自治区北方文化研究院主办的&#xff0c;面向大中专院校、中小学教育的专业性教育刊物&#xff0c;阅读对象是关心教育事业发展的大中专院校、职业教育、中小学教育的专家、教研员…

FFmpeg连载6-音频重采样

今天我们的实战内容是将音频解码成PCM&#xff0c;并将PCM重采样成特定的采样率&#xff0c;然后输出到本地文件进行播放。 什么是重采样&#xff1f; 所谓重采样&#xff0c;一句话总结就是改变音频的三元素&#xff0c;也就是通过重采样改变音频的采样率、采样格式或者声道数…

PHP项目添加分布式锁,这里是ThinkPHP8框架实现分布式锁

背景&#xff1a;公司旧项目&#xff0c;最初访问量不多&#xff0c;单机部署的。后来&#xff0c;访问量上来了&#xff0c;有阵子很卡&#xff0c;公司决定横向扩展&#xff0c;后端代码部署了三台服务器。部署调整后&#xff0c;有用户反馈&#xff0c;一个订单支付了三次。…

【机器学习入门】机器学习基础概念与原理

*&#xff08;本篇文章旨在帮助新手了解机器学习的基础概念和原理&#xff0c;不深入讨论算法及核心公式&#xff09; 目录 一、机器学习概念 1、什么是机器学习&#xff1f; 2、常见机器学习算法和模型 3、使用Python编程语言进行机器学习实践 4、机器学习的应用领域 二…

从零学Java 多线程的三个特性

多线程的三个特性 多线程要保证并发线程正确执行&#xff0c;必须要保证三个特性。 1 原子性&#xff08;互斥性&#xff09;&#xff1a; 一个或多个操作不能被分割&#xff0c;要么全部执行&#xff0c;要么就都不执行。 2 可见性&#xff1a; 多个线程访问同一个变量&a…

续航50年原子能电池揭秘

我国公司Betavolt最近宣布推出一款面向消费者市场的原子能电池&#xff0c;声称其使用寿命长达50年。首款采用该公司新型原子电池技术的产品名为Betavolt BV100&#xff0c;主要构造材料包括镍-63同位素和金刚石半导体材料。Betavolt表示&#xff0c;其核电池将主要应用于航空航…

【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)

带你一同学习和实践操作Linux服务器必学的Shell指令 前提介绍more和less命令用法more命令命令格式命令参数 常用操作命令案例分析显示文件中从第3行起的内容将日志内容设置为每屏显示4行快速定位和显示文件中包含特定字符串结合管道和more命令来分页显示 less指令命令格式搜索指…

【C++进阶】心心念念的红黑树,它来了!

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

codesys【看门狗】

看门狗&#xff1a; 时间&#xff1a; 看门狗饿死时间。灵敏度&#xff1a;是看门狗时间的倍数。看门狗1秒&#xff0c;灵敏度5&#xff0c;结果就是5秒。Task类型&#xff1a; 循环&#xff1a;用于现场总线。惯性滑行&#xff1a;CPU空闲就运行&#xff0c;主程序用这个。 P…

【模板规范】会议纪要模板

文章目录 1、简介2、纪要模板2.1、表格类会议纪要2.2、文档类会议纪要2.3、简易版项目纪要 3、会议纪要3.1、作用3.2、特点3.2.1、工作会议纪要3.2.2、代表会议纪要3.2.3、座谈会议纪要3.2.4、联席会议纪要3.2.5、办公会议纪要3.2.6、汇报会议纪要3.2.7、技术鉴定会议纪要 3.3、…

HCS私有云简介

1、HCS简介和发展史 华为云产品&#xff1a;私有云和公有云&#xff0c;现在的私有云已经和公有云越来越像了FusionSphere是华为的一个品牌2016年&#xff0c;在5.0版本的时候&#xff0c;华为Openstack叫FusionSphere Openstack 5.0&#xff0c;底层用的是suse操作系统&#…

一天一个设计模式---组合模式

基本概念 组合模式是一种结构型设计模式&#xff0c;它允许客户端统一对待单个对象和对象的组合。组合模式通过将对象组织成树形结构&#xff0c;使得客户端可以一致地使用单个对象和组合对象。 主要角色&#xff1a; Component&#xff08;组件&#xff09;&#xff1a; 定…

Express安装与基础使用

一、express 介绍 express 是一个基于 Node.js 平台的极简、灵活的 WEB 应用开发框架&#xff0c; 官方网站&#xff1a; Express - 基于 Node.js 平台的 web 应用开发框架 - Express中文文档 | Express中文网 中文文档&#xff1a; 路由 - Express 中文文档 简单来说&am…

Vulnhub靶机:driftingblues 2

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;driftingblues2&#xff08;10.0.2.18&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entr…

逸学Docker【java工程师基础】3.3Docker安装nacos

docker pull nacos/nacos-server docker network create nacos_network #创建容器网络 docker run -d \ --name nacos \ --privileged \ --cgroupns host \ --env JVM_XMX256m \ --env MODEstandalone \ --env JVM_XMS256m \ -p 8848:8848/tcp \ -p 9848:9848…

一文教你使用 ChatGPT API function calling

一文教你使用 ChatGPT API function calling Function call如何理解Function call如何调用&#xff1f; Function call 如何理解Function call 函式呼叫(function calling) 可说是这次ChatGPT API 更新的杀手级更新。所谓函式呼叫&#xff0c;就是让你把外部函式的形状写入Cha…

【Java IO分类】从传输方式和数据操作上理解 Java IO分类

Java IO - 分类 IO理解分类 - 从传输方式上字节流字符流字节流和字符流的区别字节转字符Input/OutputStreamReader/Writer IO理解分类 - 从数据操作上文件(file)数组([])管道操作基本数据类型缓冲操作打印对象序列化反序列化转换 IO理解分类 - 从传输方式上 从数据传输方式或者…

CSS3十大滤镜效果详解

滤镜效果 类似于美颜相机、美图秀秀这样的美颜工具&#xff0c;能够让我们轻松地应用多种特效&#xff0c;例如转换为黑白照片、复古风格化、调整亮度等。在之前仅凭CSS几乎很难做到这些效果。 但在CSS3的语法中&#xff0c;所有的这些视觉特效都是通过“filter”属性来快速实…