指针综合运用第一期

1.int**p的含义:*p表示这是一个指针,int*表示它指向的类型是int型的指针

2.*在打印或赋值时表示解引用,(向右对应),如**p,为*p的解引用指向某个指针,再进行解引用得到确定的值

3.指针数组的应用:用一维数组模拟二维数组的实现

4.字符串指针:如char *p="abcd";意为把首字符的地址存放在p中(如果报错改为const char *p="abcd")

5.字符串可以看作一个字符数组,如“abcd”[3]的结果为d,字符串在式子里以首字符地址存在

7.

辨析:为什么str1和str2不相等,其实很简单,字符串在式子中以首字符地址存在,那么如果a=0,b=0,难道a,b的地址一样吗?其实是一个道理。那为什么str3与str4相等?由于这两个指针指向的是字符型常量,且为同一个,当然在一个内存空间中,所有字符串首字符的地址是相等的。

8.字符指针:指向字符的指针,字符指针变量存放着字符的地址

9.&arr取出的是数组的地址,arr是数组首字母的地址

10.如何确定一个变量的类型:去掉变量名字留下的就是类型

11.数组指针的一般使用方法:

12.一维数组的传参可以是指针也可以是数组,因为传进去的其实是首元素地址

13.二维数组(元素为一维数组的数组,首元素为第一行的地址)传参形参写成数组也可以写成指针,因为传进去的其实是第一行的地址,如arr[3][5]的传入形式为int (*arr)[3]

14.重新理解*(*(arr+i)+j):首先arr代表二维数组第一行的地址,加i使a指向第i行的地址,由于arr+i表示的是一个指向第i行数据地址的指针,所以使用*解引用对这一行的地址进行释放,然后+j表示将这行第j个元素的地址取出来,最后加*进行解引用

15.对比:arr为数组首元素的地址,&arr为数组的地址,constructor和&constructor都为函数的地址

int ADD(int a,int b)
{}
int a=0;
int arr[5]={0};
int *pa=&a;//元素指针
int (*pb)[5]=&arr;//数组指针
int (*pc)(int ,int)=&ADD//函数指针

所以想要调用函数也可以是以下形式:(*pc)(2,1);也可以是(pc)(2,1),但为了增强可读性建议采用第一种方法

16.指向指针函数的指针:

char*ADD(int a,char b)
{
return NULL;
}
char*(*pa)(int ,char)=&ADD

17.运用剥洋葱方法解题*((void(*)())0)():首先,void(*)()为一个函数指针类,可由上文h函数指针结构得出,而()0为将0的类型强制转化为函数指针类,然后进行解引用得到一个函数,而最后的括号是函数体的一部分

18.重命名:typedef unsighed int good写在主函数外表示将unsighed int类型重命名为good类型,而数组指针类型int(*p)[10]可以写成 typedef int(*good)[10[,在主函数就可以用good来代替这个类型了,对于函数指针数组指针代替变量写法要写在原变量所在的位置

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

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

相关文章

如何解决“该公众号提供的服务出现故障,请稍后再试”

出现“该公众号提供的服务出现故障,请稍后再试” , 或者是出现 “公众号接口出现异常,请加入微信群接收接口报警” 的提问, 出现这个一般是开发者自身服务器出现问题导致的。 本文我来教大家如何排查。 第一步:加入告…

一个简单的参数帮助框架,c实现

文章目录 具体实现如下&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> void print_help(char *argv[]) { printf("Usage: %s [options]\n", argv[0]); printf("Options:\n"); printf(" -h, -…

Leetcode—704.二分查找【简单】

2023每日刷题&#xff08;四十七&#xff09; Leetcode—704.二分查找 实现代码 int lower_bound(int* arr, int numsSize, int tar) {int left 0, right numsSize;int mid left (right - left) / 2;while(left < right) {mid left (right - left) / 2;if(arr[mid] …

Mysql的页结构详解

1.数据库的存储结构&#xff1a;页 索引结构为我们提供了搞笑的查找方式&#xff0c;索引信息和数据记录都在保存在文件上的&#xff0c;准确地说&#xff0c;是保存在“页”结构中。 1.1磁盘与内存的基本交互单位&#xff1a;页 InnoDB将数据划分为若干个页&#xff0c;Inn…

vmware 安装 AlmaLinux OS 8.6

选择系统镜像 选择镜像 选择安装位置和修改名称 可以自定义硬件&#xff0c;也可以不选择&#xff0c;后面可以再设置 自定义硬件可以设置内存和cpu等信息 安装虚拟机系统 密码如果简单的话需要点击两次done 才能保存

每日一题:NowCower-JZ64.求1+2+3+...+n

每日一题系列&#xff08;day 10&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

用Flask构建Python的API接口

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 文章目录 Flask简介编码运行 Flask简介 如果你的代码是用python实现的&#xff0c;但是你想写一个类似SpringBoot那种的API接口&#xff0c;这时我们可以使用Flas…

【LeeCode】24. 两两交换链表中的节点

给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4] 输出&#xff1a;[2,1,4…

6.C转python

1.用append函数增加数组元素时,注意好那个 . 2.可以用insert()函数增加列表任意位置的元素,参数一为插入的下标,而二为内容 例: 若那个参数一超过了列表的最大下标,则会在列表末尾添加内容 3.查找列表中的元素 例: 4.可以使用index函数来找到当期那要找的元素的下标 例(…

状态类算法复杂排序输出

对于目标检测任务中对某一类的检测结果进行输出的时候&#xff0c;一般都是无序的&#xff0c;很明显这样子很难满足的我们的需求&#xff0c;我们更喜欢他是这样子输出的&#xff1a; &#x1f447; 我们可以看到——”按顺序输出结果“中的字段是完美的和上面图片中的识别结…

u盘一插上就提示格式化解决办法,帮助重新使用,避免数据丢失

在我们使用U盘的过程中&#xff0c;有时会遇到一插上就提示格式化的问题。这个问题可能会给我们带来很多麻烦&#xff0c;因为格式化操作会导致数据的丢失。为了解决这一问题&#xff0c;本文将介绍一些解决办法&#xff0c;帮助读者重新使用U盘&#xff0c;并避免数据丢失的风…

树莓派4b安装ubuntu22和向日葵设置开机启动

树莓派4b安装ubuntu22和向日葵设置开机启动 使用树莓派烧录系统工具烧录ubuntu 在树莓派官网下载官方软件&#xff0c;安装完后运行 在软件上选择 选择ubuntu桌面或者server 根据自己需求选择&#xff0c;这里我选择22.04的系统 烧录好以后进入系统 安装向日葵 下载树莓…