找回密码
 立即注册
首页 编程领域 编程板块 带你深入了解了解指针

前端 带你深入了解了解指针

2023-3-15 10:13:37 评论(0)
本帖最后由 羽西 于 2023-3-15 10:17 编辑

本次与大家分享一些指针的知识,帮助大家进一步了解指针。废话就不多说了,直接进入正题;

首先,我们先回顾指针初步学习的几个重要的知识。

1.指针就是一个变量,用来存放地址,地址是一块空间的唯一标识

2.指针的大小是固定的,32位的是4字节,64位的是8字节.

3.指针是有类型的,类型决定了指针在加减整数的步长,指针在解引用的时候的权限

4.指针的运算。一般用于数组,两个地址的差的绝对值为元素个数。

  1. char *p="hello";
复制代码


思考以上这一行代码是什么意思呢?它真实存在吗?

答案是这一行代码在程序中是可以存在的,"hello"这串字符储存空间的首地址被存到了p中。由于"hello"是一个字符串常量,所以p是不能不能被更改的

  1. const char *p="hello";//这样写会更为严谨一些
复制代码


说到这,我们不得不说说两个程序:

第一个是:

  1. #include
  2. int main()
  3. {
  4.   char *p="hello";
  5.   *p='w';//解引用,给p赋值,这里随便举的例子'w'
  6.   printf("%s",p);
  7.   return 0;
  8. }
复制代码

函数函数,函数有没有指针呢?

答案是有函数指针

函数指针怎么定义呢?它的方法与数组指针类似。

举个例子:

  1. int txt(int x,int y)
  2. {}//函数txt
  3. //与数组指针相同先给一个变量P,由于是指针需要加上*,得到*p
  4. //然后找该指针指向空间内容的类型,此例题函数的类型是int (int,int)
  5. //的出结果
  6. int (*p)(int,int)=&txt;
  7. //这时,有些人脑洞大开,数组名为首元素地址,函数名是不是也有?
  8. //答案是没有,函数名也表示函数所在空间的地址,即txt与&txt等价
  9. int (*p)(int,int)=txt;//也是对的
复制代码

好了,到这里我们本次的分享就结束了。感觉对你有帮助的,可以给我点个赞,让我知道你有所收获。如果期待下一次的分享,可以给我点个关注噢。如果有兴趣的可以思考一以下两行代码,它们出自《c陷阱和缺陷》,下一篇文章我会对此做一个简单的分享

  1. (*(void(*)())0)();
  2. void(*signal(int,void(*)(int)))(int);
复制代码







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

使用道具 举报

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们(3513994353@qq.com)。
您需要登录后才可以回帖 登录 | 立即注册
楼主
羽西

关注0

粉丝0

帖子15

最新动态