博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
黑马程序员-关于C语言的指针一些小知识点
阅读量:7099 次
发布时间:2019-06-28

本文共 1623 字,大约阅读时间需要 5 分钟。

                        ------- IOS培训、android培训、java培训、期待与您交流! ----------

 c语言的难点和精华部分就是指针,能够将指针完全理解并且将其运用熟练不是一件容易的事情,其中有几个知识点比较绕一些。

1.数组指针与指针数组的区别。

   数组指针是一个指针,是指向数组的指针,就如同int*,char*型指针,只不过它是指向数组的(首元素),大小为4(32位平台下),通过它就可以做找到整个数组。

1 #include 
2 int main(int argc, char *argv[]) 3 { 4 int a[3][4] = {
{
0,1,2,4}, 5 {
5,6,7,8}, 6 {
9,10,11,12}}; 7 int (*p)[4]; 8 p = a; 9 printf("%d",**(p +1)) ;10 return 0;11 }

其中 int (*p)[4] 是一个二维的数组指针。

指针数组是一个数组,数组的元素都是指针而已,看下面代码

1 #include 
2 int main(int argc, char *argv[]) 3 { 4 int a[3][4] = {
{
0,1,2,4}, 5            {
5,6,7,8}, 6            {
9,10,11,12}}; 7   int *p[3]; 8   for(int i=0;i<3;i++){ 9    p[i] = a[i];10 }11   printf("%d",*p[1]) ;12   return 0;13 }

int *p[3]里面存的都是指针

 

2.指针函数和函数指针的区别

指针函数是一个函数,它的返回值是一个指针而已。其实准确来说没有指针函数这么一说,只有返回值为指针的函数或者参数为指针的函数。

函数指针是一个指针,这个指针指向具体的一个函数。它在程序设计中是非常有用的,可以显著的减少代码量和优化代码结构,下面是一个简单的用法示例。

 

1 #include "stdio.h" 2  3 #define OK 1 4  5 int Fun1(int num) 6 { 7     printf("The Fun1 value is %d\n",num); 8     return OK; 9 } 10 11 int Fun2(int num)12 {13     printf("The Fun2 value is %d\n",num);14     return OK;15 } 16 17 int Fun3(int num)18 {19     printf("The Fun3 value is %d\n",num);20     return OK;21 } 22 23 24 int main()25 {   26     int i,state;27     //定义函数指针 28     int (*Fun_p[3])(int num); 29     //初始化函数指针 30     Fun_p[0] = Fun1;   31     Fun_p[1] = Fun2;32     Fun_p[2] = Fun3;33     34     for(i=0;i<3;i++)35        state = Fun_p[i](i);36     getchar();37     return ;38 }

 

转载于:https://www.cnblogs.com/zhangxining/p/4198057.html

你可能感兴趣的文章
python数据结构之二叉树遍历的实现
查看>>
进出口流程 & 报关单据
查看>>
各主流浏览器内核介绍
查看>>
[LeetCode] Copy List with Random Pointe
查看>>
如何更深入地学习Linux?
查看>>
目标检測的图像特征提取之(一)HOG特征
查看>>
MySQL-EXPLAIN用法详解
查看>>
jdbctemplate中的query(sql,params,mapper)与queryForList(sql,params,class)区别
查看>>
C++ 虚函数表解析
查看>>
Responder一点也不神秘————iOS用户响应者链完全剖析
查看>>
Type mismatch: cannot convert from java.sql.PreparedStatement to com.mysql.jdbc.PreparedStatement
查看>>
thinkphp 重定向redirect
查看>>
Builder创建者模式
查看>>
安卓应用使用QQ登录的申请流程
查看>>
Android批量图片加载经典系列——采用二级缓存、异步加载网络图片
查看>>
redis 数据类型详解 以及 redis适用场景场合
查看>>
RAC安装重新运行root.sh
查看>>
Mac下面的SecureCRT(附破解方案) 更新到最新的7.3.2(转)
查看>>
Java多线程有哪几种实现方式? Java中的类如何保证线程安全? 请说明ThreadLocal的用法和适用场景...
查看>>
工作队列(workqueue) create_workqueue/schedule_work/queue_work
查看>>