您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页指针,指针变量,引用,取地址符,malloce()函数使用,C中“—>” 和“ . ” 作用与区别

指针,指针变量,引用,取地址符,malloce()函数使用,C中“—>” 和“ . ” 作用与区别

来源:化拓教育网


一:指针,指针变量,引用,取地址符:

  • 符号“ * ” 和 指针变量

  • int *p; #这个代码的含义是: 创建一个指针变量:p, p是一个指针变量,而p前面的 “ * ” 是在声明p是一个指针变量

前提

  • int e = 10;

  • int a = 5;

1.“ * ” 的两种用途

  • 1.1:解引用:返回指针所指对象的值

  • int *p=&a;

  • *p = 50; //此处相当于将 a中内容修改成50;

  • 1.2:声明指针变量:表面该变量是指针变量

  • 场景一:

  • int *p;

  • 场景二:在形参声明指针

  • void test1(int* q) {

  • }

  • void main1(){

  • test1(p) ;

  • }

  • 当main函数调用test函数时,test1函数空间会开辟一块新的内存空间,并且创建一个指针变量q,并且将p指针的内容 存放到q指针中(p,q是单独存在的两个指针,知识他们存储的内容是一样的;)

2." & “的两种用途

2.1:引用
  • 场景一:声明引用变量

  • int &r = a; #将r 作为a的别名 和 a 一样(但是不能修改引用)

  • 例如 r = 6 : #实质是 先将 a修改成6 然后r的引用也变为6

  • 场景二:函数形参声明 引用变量

  • void test2(参数类型 &y)

  • void main(){

  • test(a); // 相当于 将y作为a的别名,当在test2中 修改y时,实质上的操作是:先修改了a,然后同时 y 的引用也指向 新的 a。

  • }

  • 场景三:指针类型 和 引用 同时出现在形参位置

  • void test2(参数类型* &y) //此处表示,一个指针变量y ,将会成为 调用test2 时,传递过来参数的引用

  • void main(){

  • test2(p);

  • }

  • 当main函数调用test函数时,test1函数空间会开辟一块新的内存空间,并且创建一个指针变量y,此时指针变量y 和 p 是同一个指针,q是p的别名(引用))

2.2:取地址
  • p = &a;

  • int *q = &a;

  • printf(“%d”,*q);

  • // 10

补充

1: int* p,q; 和 int *p,q; //表达相同含义 等价 int *p;int q;

举例: int a = 5;

int *p = &a;

int **q = &p;

print(q)

print(*q)

print(**q)

//输出 a

二 : malloc(),动态申请地址空间

1.原型定义 void *malloc(int size);

malloc()使用 : (数据类型*)malloc(sizeof(数据类型)*申请数据数量)

补充:

1.由malloc定义,其返回对象是指针类型,只能被指针变量接收

三:—> 和 . 作用 区别

1.作用:

  • A.B 则 A为对象或者结构体; 点号(.):左边必须为实体。

  • A->B则A为指针,->是成员提取,A->B是提取(*A)中的成员B,A只能是指向类、结构、联合的指针; 箭头(->):左边必须为指针;

    补充:联合体(union) 参考文章: 中第二部分

2.理解:

s.member 等价于 (&s)->member (*p).member 即是 p->member (p->member 等价于(*p).member )

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务