当前位置: 首页 > news >正文

c语言指针3

int main() {int ar[] = { 1,2,3,4,5,6,7,8,9,20 };int n = sizeof(ar) / sizeof(ar[0]);int* p1 = &ar[0];int* p2 = &ar[n];printf("%d\n", p2 - p1);  //元素的个数 40/4 = 10return 0;
}

输出:10

注:

1.p2+p1语法错误

2.p2-(char*)p1 二义性

 

int *p;
*p = 10;  //野指针

野指针没有数据空间

 

结构体

指针指向结构体时,可以通过指向符->操作其内部成员,简洁方便

typedef struct Student {char* name;int age;float height;
}Student;int main() {Student s = { (char*)"名字",30,170.5 };printf("name = %s, age = %d, height = %f\n", s.name, s.age, s.height);printf("name = %s, age = %d, height = %f\n", (&s)->name, (&s)->age, (&s)->height);Student* ps = &s;printf("name = %s, age = %d, height = %f\n", (*ps).name, (*ps).age, (*ps).height);printf("name = %s, age = %d, height = %f\n", ps->name, ps->age, ps->height);return 0;
}

 

 链表

#define ElemType int
typedef struct ListNode{ElemType data;struct ListNode *next;
}ListNode;typedef ListNode* List;int main(){List head;ListInit(&head);ListCreate(&head);
}

 

复杂指针解析

C/C++所有复杂的声明结构,都是由各种声明的嵌套构成的,理解复杂指针可以使用左右法则

左右法则--首先从未定义的标识符开始看起,然后往右看,再往左看,每当遇到圆括号,就应该调转阅读方向,一旦解析完圆括号里面的所有东西,就跳出圆括号,重复这个过程直到整个声明解析完成

复杂指针:

1.int * (* (*func) (int *)) [10];

2.int (*func)(int *, int (*)(int *));

3.int (*func[5])(int *);

4.int (*(*func)[5](int *);

5.int (*(*func)(int *)) [5];

6.(*(void(*) ())0)();

7.void(*set_new_handler(void(*f)()))();

 1.int * (* (*func) (int *)) [10];

首先func是一个指针,该指针指向一个函数,函数的特征是具有一个整型指针参数和一个指针的返回值,该指针指向的是数组,数组具有十个元素,其中每个元素都是整型指针

2.int (*func)(int *, int (*)(int *));

首先func是一个指针,该指针指向一个函数,函数的特征是具有两个参数和一个返回值,其参数一个是整型指针参数,另一个是函数指针的参数,函数返回值为整型值

3.int (*func[5])(int *);

首先func是一个数组,数组具有五个元素,其中每个元素都是一个指针,该指针指向函数,函数的特征是具有一个整型指针的参数和一个整型的返回值

4.int (*(*func)[5](int *);

首先func是一个指针,该指针指向数组,数组具有五个元素,每个元素都是指针,指针指向函数,函数特征为一个整型指针参数和一个整型返回值

5.int (*(*func)(int *)) [5];

首先func是一个指针,指针指向函数,函数特征为一个整型指针参数和一个指针的返回值,其返回值指针指向的是具有五个整型数据的数组

相关文章:

  • 免费且开源的企业级监控解决方案:Zabbix
  • JEnv-for-Windows​管理JDK版本
  • 如何提升个人解决问题的能力?
  • 【论文精读】Reformer:高效Transformer如何突破长序列处理瓶颈?
  • 本地服务器 Odoo 安装指南,并实现公网访问
  • STM32提高篇: 蓝牙通讯
  • 服务器上部署Nginx的几种方式
  • 位运算知识
  • 第九篇:系统分析师第三遍——5、6章
  • 相机中各个坐标系的转换关系如像素坐标系到世界坐标系以及相机标定的目的
  • Java Arrays工具类解析(Java 8-17)
  • Python flask入门
  • Scanpy可视化技巧--UMAP图优化
  • 大模型Rag - 检索增强技术
  • Certimate本地化自动化 SSL/TLS 证书管理解决方案
  • Windows Server 2022 常见问题解答
  • 【Element Plus】解决移动设备使用 el-menu 和 el-sub-menu 时,子菜单需要点击两次才会隐藏的问题
  • 【期末复习-考试】软件质量测试与保考试题库(选择题+填空题)
  • KBEngine 源代码分析(一):pyscript 目录文件介绍
  • SQL技术终极指南:从内核原理到超大规模应用
  • 李公明︱一周书记:大学的价值、韧性以及……不相称的对抗
  • “未来3天公布”,特朗普俄乌“和平计划”是什么?普京泽连斯基什么态度?
  • A股三大股指集体高开,黄金股大幅回调
  • 两代“楚王”世纪同框,楚王熊悍鼎将回安徽展出
  • 私和人命:清代四川南部县谢相荣投河溺毙一案
  • 2025年上海车展后天开幕,所有进境展品已完成通关手续