C 使用指针访问成员变量

发布于 科技 2024-08-20
14个回答
  1. 匿名用户2024-02-01

    1. 新品

    new 是 C++ 的关键字。 它被视为运算符,如 +、. 此操作的结果是应用指定数据类型大小的内存段。

    语法: Pointer variable = new data type;

    新将做三件事:

    1.主动计算指定数据类型所需的内存空间量;

    2.返回正确的指针类型;

    3. 在第一次内存分配中,分配的内存将按照语法规则进行初始化。

    这是什么意思? 请看以下示例:

    int* p;

    p = new int;

    与过去不同的是,p 不再是“篱笆下”,不是对现有变量,而是对 new 分配的新内存空间。

    p 指向由 new 分配的新内存“ 这句话相当于:”new 分配了一段新的内存空间,然后将该内存空间的地址存储在变量 p 中。 因此,最后,p 仍然存储变量的地址,只不过它是一个“未命名”的变量。

    指向现有变量和指向新分配的内存空间有什么区别?

    “原始变量”可以比作指向与主同在的原始房间。 “新分配的内存空间”就像一个“临时建筑”。 当我们不需要它时,我们必须主动拆除它。 拆除工作由 Delete 完成。

    当使用new获取指针变量并获取内存地址时,我们可以如前所述,通过指针和*号对内存地址(匿名变量)进行操作。

    例如:int* p = new int;

    p = 100;

    cout 屏幕将输出 100。

    2. 新建时初始化。

    new 您还可以在申请内存空间时直接设置要放入内存的内容。

    语法:指针变量 = 新数据类型(初始值);

  2. 匿名用户2024-01-31

    类其实和结构体类似,都是重新定制的数据类型,其中第三行的类ab{}是class{}; 其实是和int一样定义的新数据类型,但是int是C++预定义的,new必须根据后续的数据类型来分配空间的大小,呵呵,如果换成别的东西,因为没有这个数据类型就没有办法分配空间, 所以这是不对的。

  3. 匿名用户2024-01-30

    你的 *o 指向的是 ab 类,当然是新的 ab,当然把它改成别的东西是错误的。

  4. 匿名用户2024-01-29

    AB 这里是类型。 等价于 int *o=new int。

  5. 匿名用户2024-01-28

    这不就是演员的问题吗? 。

  6. 匿名用户2024-01-27

    第一种写法:

    a).p=&b;

    高于 *,并且 (指针) 两侧的括号不能丢失。 如果去掉括号并写上*,那么它就等价于*(,所以意思是完全错误的。

    第二种写法:

    a->p=&b;

    是一个新的运算符,通常称为“arrow”,可以使用它直接通过结构指针获取结构成员; 这也是 -> 在 C 语言中的唯一用途。

    struct 是一种数据类型,是用于创建变量的模板,编译器不会为其分配内存空间,就像 int、float、char 等关键字本身不会占用内存一样; 结构变量包含真实数据,需要内存来存储它们。 以下是一个错误,不能取结构名称的地址,也不能分配给其他变量。

  7. 匿名用户2024-01-26

    首先,我们必须知道两个最基本的知识点:

    1. &a 指向 a 的地址。

    2.指针指向地址,不等于整数变量的值,即int *不等于int,不能从int转换为int *。

    知道了以上两个最基本的知识点,你的问题很简单。

    第一个:int *p;

    p=&a;没错。 定义指针变量 p,然后才将 p 指向变量 a 的地址。

    第二:int *p;

    p=int* (a);

    p 是指向地址的指针,而不是 int 值,因此是错误的。

    第三:int *p=a;

    无法从 int 转换为 int*,所以这是错误的。

    只有第一个是正确的,后两个是错误的。

  8. 匿名用户2024-01-25

    int *p;指示声明 int 地址的变量,称为 p

    a,直接解释的是一个int变量的值。 是地址中的数值。

    所以我选择 p=&a;

  9. 匿名用户2024-01-24

    struct 指针成员指向一个变量,这有点难以理解。

    从字面上看,断句有几种可能性:

    首先定义一个包含所有可能方案的结构:

    struct test

    struct test t1, *t2;1. 结构指针成员指向的变量。

    结构中有一个指针成员,然后您要访问该结构成员指向的变量值。

    然后你可以 *(这种方式取 p 的值。

    struct 指针成员指向变量。

    有两种方法可以访问这种情况:

    t2->p)

    或 *(*t2)。p)

    效果是一样的。

    描述不正确,但它是:

    struct 指针指向成员变量。

    同样,可以使用两种方法:

    t2->p

    或 *(*t2)。p

  10. 匿名用户2024-01-23

    1.既然是指针变量,那就把一个变量的地址值赋给指针变量吧!

    2.具体来说,给指针赋值地址值有两种方式:一种是用地址字符&操作嵌入变量,另一种是利用malloc函数动态打开内存,给指针变量赋值内存地址值。

    3. 例如,定义 int 指针变量 int

    p;和 int 类型变量

  11. 匿名用户2024-01-22

    由于 int 是值类型,因此不能直接分配给 p(p 是 int 指针类型)。 因此,将支架放在二楼是正确的。 通过获取 p 的地址并将其转换为相应的指针,然后将 b 直接分配给它。 另一种方法:a->p=&b;

    将 b 的地址分配给 a 中 p 的指针。

  12. 匿名用户2024-01-21

    你的理解太有问题了,所以我看不懂以下内容。

    1.我在这里的理解是创建了一个名为 pf 的指针函数,指针函数中的值是一个整数类型——即一个名为 pf 的指针,这个 pf 指针指向一个具有 3 个 int 形式参数的函数,并且这个函数不返回值。

    2.因为 pf=sort,对应的函数值也对应 a=x, b=y, c=z - 错误,这就是函数定义。 定义了一个名为 sort 的函数,该函数有 3 个 int 类型形式参数,它们不对应任何人,而是自己需要的; 该函数不返回值。

    3.将函数的输入值作为 a、b、c - 这句话的理解方式类似。 它使 x=a、y=b、z=c。

    4.这里我想问一下,x y的位置可以反转吗? temp 和 x 呢 - 它们不能互换! 您想弄清楚谁将值分配给谁:将等号右侧的值分配给左侧的变量。

    5.这是 x y z 中数字地址的反转 - 它们不会交换地址,只是交换值。 例如,x=5 和 y=1 已替换为 x=1 和 y=5。

    6.pf(a,b,c),一个包含赋值的指针函数,是不是没用——错了。 这不是一个赋值,而是一个指针,用于调用具有实际参数 a、b 和 c 的排序函数,即在排序函数中使形式参数 x=a、y=b、z=c 并执行排序函数。

    7.函数排序中 x y z 的值可以用来实现上述操作——排序吗? 无论输入 a、b 和 c 的值多么混乱,它们都会从大到小输出。

  13. 匿名用户2024-01-20

    #include

    #include

    using namespace std;

    void sort(int,int,int);

    int main()

    viod sort (int x,int y,int z);因为 pf=sort,所以对应的函数值也对应 a=x,b=y,c=z?

    我真的不明白公式的后半部分。 是不是把x、y、z中数字的地址交换,改变数字的位置,达到排序的目的?

    这不是交换地址,只是交换变量的值。

    与其参考函数调用,不如只取函数排序中 x y z 的值来做上述操作吗?

    而pf(a,b,c),一个指针函数,包括赋值,不是没用吗?

    麻烦大家了,谢谢你们的帮忙,我会因为你们的好意多加分。。谢谢,谢谢。

  14. 匿名用户2024-01-19

    void(*pf)(int,int,int) 定义了一个名为 pf! 注意它是一个函数指针,请检查指针函数的含义。

    pf=sort ;指针指向排序函数,排序函数可以被 pf 指针引用(其实排序函数的地址值是分配给 pf 的,如果这个不理解,说明对指针的理解不够清楚)。

    pf(a,b,c) ;sort 函数通过 pf 调用,等价于 sort(a,b,c);

    viod sort (int x,int y,int z) 在这里有一个额外的分号}

相关回答
24个回答2024-08-20

指针是一维的,数组是二维的。

所以 *p 可以表示 a[0][0] 的值,但 **p 找不到相应的语法等价物。 换句话说,你不能那样做。 为此,您需要声明一个二维数组。 >>>More

10个回答2024-08-20

class test

protected: >>>More

10个回答2024-08-20

在 Windows 平台上 +VC 指针是 4 个字节,我不知道你在用什么。 >>>More

14个回答2024-08-20

它是将 DAT 的值存储在加法器地址上,注意它是一个 16 位无符号数字。 >>>More

4个回答2024-08-20

printf("%d",&i);它应该改为 printf("%d",i);

这是变量 i 的地址。 删除地址字符是 i 的值。 >>>More