c语言(指针进阶)

指针

  • 一.什么是字符指针
  • 二.使用指针数组模拟二维数组
  • 三.函数指针

一.什么是字符指针

字符指针:指向字符型数据的指针变量。每个字符串在内存中都占用一段连续的存储空间,并有唯一确定的首地址。即将字符串的首地址赋值给字符指针,可让字符指针指向一个字符串。

int main()
{char str1[] = "hello bit.";char str2[] = "hello bit.";const char* str3 = "hello bit.";const char* str4 = "hello bit.";if (str1 == str2)printf("str1 and str2 are same\n");elseprintf("str1 and str2 are not same\n");if (str3 == str4)printf("str3 and str4 are same\n");elseprintf("str3 and str4 are not same\n");if (&str3 == &str4){printf("Yes\n");}else{printf("No\n");}return 0;
}

上述代码中的运行结果
在这里插入图片描述
第一个的运行结果为什么是不同的:因为str1和str2是两个不同的字符数组,开辟的空间也是不同的
第二个的运行结果是相同的:因为str3和str4都是字符串常量,指向的地址都是相同的

二.使用指针数组模拟二维数组

int main()
{int arr1[] = { 1,2,3,4,5 };int arr2[] = { 2,3,4,5,6 };int arr3[] = { 3,4,5,6,7 };//int*  int*  int*//指针数组int* a[3] = { arr1,arr2,arr3 };for (int  i = 0; i < 3; i++){for (int j = 0; j < sizeof(arr1) / sizeof(arr1[0]); j++){printf("%d ",a[i][j]);}printf("\n");}return 0;
}

arr[i]就是相当于拿到了每个元素的数组名,j相当于拿到了每一列的数组名

三.函数指针

int Add(int x, int y)
{return x + y;
}int main()
{//&函数名就是函数的地址//函数名也是函数的地址printf("%p\n", &Add);printf("%p\n", Add);int(*pf1)(int, int) = Add;//int (*pf1)(int, int) = Add;//pf1就是函数指针变量//int (* pf2)(int, int) = &Add;//int ret = (* pf2)(2, 3);//int (* pf2)(int, int) = Add;//int ret = pf2(2, 3);//int ret = pf2(2, 3);int ret = Add(2, 3);printf("%d\n", ret);return 0;
}

1.首先需要一个指针变量*pf1=Add
2.因为运算符的优先级所以*pf1需要用括号括起来(*pf1)
3.是什么类型的,如果是int就是 int(*pf1),其他类型是一样的
4. 上面函数参数是两个整型 ,所以第二个括号就是int (*pf1)(int , int ),两个参数可以省略
5. int ret = (* pf2)(2, 3);对函数指针直接进行传参
以上就是函数指针


int main()
{( *(void (*)()) 0 )();return 0;
}

上述代码所说的是,函数没有参数,返回类型是void,参数也是空,强转为函数指针类型

void (* signal(int,void(*)(int)))(int);

此代码是一次函数声明,声明的是signal函数
int是signal函数的第一个参数,void (*)(int)是此函数的第二个参数,是函数指针类型,参数是int,返回类型是void

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

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

相关文章

力扣---通配符匹配

题目描述&#xff1a; 给你一个输入字符串 (s) 和一个字符模式 (p) &#xff0c;请你实现一个支持 ? 和 * 匹配规则的通配符匹配&#xff1a; ? 可以匹配任何单个字符。 * 可以匹配任意字符序列&#xff08;包括空字符序列&#xff09;。 判定匹配成功的充要条件是&#xff…

GoJS可视化JavaScript库讲解

1.简介 GoJS是一个可视化JavaScript库&#xff0c;用于浏览器中创建交互图形&#xff0c;&#xff08;比如流程图&#xff0c;树图&#xff0c;关系图&#xff0c;力导图等等&#xff09;。允许您为用户构建各种图表&#xff0c;从简单的流程图、组织图到图表、SCADA和BPMN图表…

配置 JDK 环境变量(最简单)

前言 在通过控制台使用 javac 命令编译 &#xff0c;java 命令运行 Java 程序时&#xff0c;会出现识别不了这两个命令的情况&#xff0c;如下所示&#xff1a; 这是没有配置环境变量导致的 在控制台输入的命令&#xff0c;操作系统会去一些特定的目录中去找&#xff0c;看看是…

[职场] 面试失败的解压方式是什么 #经验分享#职场发展#知识分享

面试失败的解压方式是什么 1、心态调整&#xff1a;自我暗示、找人吐槽发泄情绪都是极佳的心态调整办法&#xff1b; 2、策略调整&#xff1a;当面对同一个岗位多次不成功的时候&#xff0c;需要我们调整策略&#xff0c;尝试去应聘相近的工作岗位&#xff1b; 3、总结提升&…

数字的魅力之情有独钟的素数

情有独钟的素数 什么是素数 素数&#xff08;Prime number&#xff09;也称为质数&#xff0c;是指在非0自然数中&#xff0c;除了1与其本身之外不拥有其他因数的自然数。也就是说&#xff0c;素数需要满足两个条件&#xff1a; 大于1的整数&#xff1b;只拥有1和其自身两个…

Vue 全组件 局部组件

一、组件定义和使用 1、全局组件 定义 <template> <div> <h1>This is a global component</h1> </div> </template> <script lang"ts"> </script> <style></style> 导入 全局组件在main.ts&#xff…

[OPEN SQL] 新增数据

INSERT语句用于数据的新增操作 本次操作使用的数据库表为SCUSTOM&#xff0c;其字段内容如下所示 航班用户(SCUSTOM) 该数据库表中的部分值如下所示 1.插入单条数据 语法格式 INSERT <dbtab> FROM <wa>. INSERT INTO <dbtab> VALUES <wa>. INSERT &…

windows vs 自己编译源码 leveldb 然后使用自己编译的文件

1 准备源码文件 1.1 第一种方法 git下载源码 vs项目中git leveldb源码和git third_party googletest-CSDN博客 1.2 第二种方法 手动下载 然后把第三方的源码下载 复制到 third_party 对应的文件夹中 没有文件夹 third_party -> powershell mkdir third_party 2 编译lev…

计算机网络——12DNS

DNS DNS的必要性 IP地址标识主机、路由器但IP地址不好记忆&#xff0c;不便于人类用使用&#xff08;没有意义&#xff09;人类一般倾向于使用一些有意义的字符串来标识Internet上的设备存在着“字符串”——IP地址的转换的必要性人类用户提供要访问机器的“字符串”名称由DN…

课时31:内容格式化_输出格式化_printf格式化

1.1.3 printf格式化 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 场景需求 虽然我们能够通过 echo的方式实现信息某种程度的格式化输出&#xff0c;但是很多信息的输出偏重于手工的干预&#xff0c;效率太慢。我们需要一种功能…

多进程面试题汇总

这里写目录标题 一、多进程1、进程的定义&#xff1a;2、单核多任务CPU执行原理3、进程的优点和缺点4、创建进程15、创建进程26、进程池6.1、进程池的作用6.2、原理图6.3、使用进程池的优点 7、进程间的通信&#xff08;Queue&#xff09;7.1、需求1&#xff1a;采用多进程将10…

面试:大数据和深度学习之间的关系是什么?

大数据与深度学习之间存在着紧密的相互关系&#xff0c;它们在当今技术发展中相辅相成。 大数据的定义与特点:大数据指的是规模(数据量)、多样性(数据类型)和速度(数据生成及处理速度)都超出了传统数据处理软件和硬件能力范围的数据集。它具有四个主要特点&#xff0c;通常被称…