首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

非标准-使用'&‘创建指向成员的指针

非标准-使用'&'创建指向成员的指针是一种非标准的语法,通常在C或C++编程语言中使用。它允许我们创建一个指向结构体或类的成员的指针。

在C语言中,结构体是一种自定义的数据类型,可以包含多个不同类型的成员变量。在C++中,类是一种类似于结构体的数据类型。通过使用'&'运算符,我们可以获取结构体或类的成员的地址,并将其赋值给指针变量。

这种非标准的语法在实际开发中很少使用,因为它可能导致代码的可读性和可维护性下降。通常,我们会使用结构体或类的指针来访问和操作其成员。

以下是一个示例代码,演示了如何使用'&'创建指向结构体成员的指针:

代码语言:c
复制
#include <stdio.h>

typedef struct {
    int x;
    int y;
} Point;

int main() {
    Point p;
    p.x = 10;
    p.y = 20;

    int* px = &(p.x);
    int* py = &(p.y);

    printf("p.x = %d\n", *px);
    printf("p.y = %d\n", *py);

    return 0;
}

在上述示例中,我们定义了一个名为Point的结构体,包含两个整型成员变量x和y。然后,我们创建了一个Point类型的变量p,并给其成员变量赋值。接下来,我们使用'&'运算符分别获取了p.x和p.y的地址,并将其赋值给整型指针变量px和py。最后,我们通过解引用指针来访问和打印结构体成员的值。

需要注意的是,这种非标准的语法可能在不同的编译器和平台上产生不同的行为,因此在实际开发中应该避免使用。如果需要操作结构体或类的成员,建议使用正规的语法和编程实践。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Effective STL笔记

    #estl 第50条:熟悉与STL相关的web站点。三个:www.sgi.com/tech/stl、www.stlport.org 和 www.boost.org。 #estl 第49条:学会分析与STL相关的编译器诊断信息。嗯,第一招是替换大法,然后介绍了一下与容器、插入迭代器、绑定器、输出迭代器或算法相关的错误大概有什么套路看。 #estl 第48条:总是包含(#include)正确 的头文件。因为C++标准没有规定头文件的互相包含关系,所以不同的STL实现有所不同。要记住容器基本上声明在同名文件中,算法是algo..和 num..,迭代器在iterator中,函数子和配接器在functional中。 #estl 第47条:避免产生“直写型”(write-only)的代码。即所谓容易编写,但难以阅读和理解的代码,比如一行调用函数12次,其中 10 个是互不相同的。 #estl 第46条:考虑使用函数对象而不是函数作为STL算法的参数。嗯,因为函数对象更容易让编译器乐于内联,所以速度会快一些。从代码被编译器接受的程度而言,它们更加稳定可靠。 #estl 第45条:正确区分count、find、binary_search、lower_bound、upper_bound和equal_range。嗯,这与传入的区间是否已经排序有关,与你的目的有关,与容器有关,总之复杂,要自己去看这一小节两次。 googollee 我一直认为这个应该由重载来完成 RT @laiyonghao: #estl 第44条:容器的成员函数优先于同名的算法。原因:速度更快,且与容器结合得更加紧密,更能够与容器的行为保持一致。 #estl 第44条:容器的成员函数优先于同名的算法。原因:速度更快,且与容器结合得更加紧密,更能够与容器的行为保持一致。 #estl 第43条:算法调用优先于手写的循环。三个理由:效率更高,更不容易出错,和更好的可维护性。 #estl 第42条:确保less<T>与operator<T>具有相同的语义。真理总是如此平淡……还能说啥呢? #estl 第41条:理解ptr_fun、mem_fun和mem_fun_ref的来由。咳,想起当年理解 .* 和 ->* 的时候多么地头痛…… #estl 第40条:若一个类是函数子,则应使它可配接。因为 STL 的函数配接器要求一些特殊的类型定义,argument_type,result_type…之类。编写函数子从unary_function或 binary_function继承是一个不错的方案。 #estl 第39条:确保判别式是“纯函数”。纯函数即返回值仅仅依赖于其参数的函数。估计在这条阴沟里翻过船的人不少,哈哈哈。 #estl 第38条:遵循按值传递的原则来设计函数子类。换句话说就是让它们小巧,而且单态。这个条款的意义在于为赘重而且多态的函数子带来的问题提出一个解决方案,pimpl 惯用法。 #estl 第37条:使用accumulate或者for_each进行区间统计,前者的代码更明了一些,重要的是它们接受的函数子要求不同。 #estl 第36条:理解copy_if算法的正确实现。文中给出了一个正确实现,注意点是不能要求使用的函数子是可配接的,STL 算法都这样。 #estl 第35条:通过mismatch或lexicographical_compare实现简单的忽略大小写的字符串比较。 #estl 第34条:了解哪此算法要求使用排序的区间作为参数。嗯,STL 算法有不少是要排序的区间的,如果实参并非如此,轻则性能下降,重则逻辑错误,不可不察。 #estl 第33条:对包含指针的容器使用remove这一类算法时要特别小心。作为cpp程序员,一定要时刻警惕资源泄漏。boost::shared_ptr是一个好选择。 #estl 第32条:如果确实需要删除元素,则需要在remove这一类算法之后调用erase。嗯,讲的就是erase-remove惯用法的由来,另外在讲了一次不同容器删除元素的方法是不同的。 #estl 第31条:了解各种与排序有关的选择。简言之,介绍了partition/stable_partition/nth_element /partial_sort/sort/stable_sort的用法和适用场合。 吼吼,到这里,书就看了一半了。接下来是重头戏:算法。 #estl 第30条:确保目标区间足够大。特别是做覆盖的时候,一定要注意,可以先用resize撑大。插入时用back_inserter、front_…、 inserter和ostream_iterator。 #estl 第29条:对于逐个字符的输入请考虑使用istreambuf_iterator。先说了一下istream_it

    01

    JavaDoc的生成规则—ShinePans

    使用方法: javadoc [options] [packagenames] [sourcefiles] [@files] -overview <file> 从 HTML 文件读取概览文档 -public 仅显示 public 类和成员 -protected 显示 protected/public 类和成员 (默认值) -package 显示 package/protected/public 类和成员 -private 显示全部类和成员 -help 显示命令行选项并退出 -doclet <class> 通过替代 doclet 生成输出 -docletpath <path> 指定查找 doclet 类文件的位置 -sourcepath <pathlist> 指定查找源文件的位置 -classpath <pathlist> 指定查找用户类文件的位置 -exclude <pkglist> 指定要排除的程序包列表 -subpackages <subpkglist> 指定要递归载入的子程序包 -breakiterator 计算带有 BreakIterator 的第一个语句 -bootclasspath <pathlist> 覆盖由引导类载入器所载入的 类文件的位置 -source <release> 提供与指定发行版的源兼容性 -extdirs <dirlist> 覆盖所安装扩展的位置 -verbose 输出有关 Javadoc 正在运行的操作的信息 -locale <name> 要使用的区域设置, 比如 en_US 或 en_US_WIN -encoding <name> 源文件编码名称 -quiet 不显示状态消息 -J<flag> 直接将 <flag> 传递到执行时系统 -X 输出非标准选项的提要

    01

    BRAIN脑电研究:使用快速球方法评估阿尔茨海默病识别记忆

    早期诊断阿尔茨海默病需要对相关结构和功能变化敏感的生物标志物。虽然在结构生物标记物的开发方面已经取得了相当大的进展,但早期识别变化的功能性生物标记物仍然是需要的。我们提出了快速球(Fastball),一种新的脑电测量被动和客观的识别记忆的方法,不需要行为记忆反应或对任务的理解。年轻人、老年人和老年痴呆症患者(每组20人)完成了快速球任务,持续时间不到3分钟。参与者被动地观看快速呈现的图像,EEG评估他们根据先前的暴露程度(即旧/新)自动区分图像的能力。参与者没有被要求注意之前看到的图像,也没有做出任何行为反应。在快速球任务之后,参与者完成了一个有两个选项的强制选择(2AFC)任务,以测量他们对先前看到的刺激的显性行为识别。快球EEG检测到,与健康老年人相比,阿尔茨海默病患者的识别记忆明显受损,而行为识别在阿尔茨海默病患者和健康老年人之间没有显著差异。使用快速球识别记忆测量方法,阿尔茨海默病患者与健康老年人对照者的识别准确率较高,而使用行为2AFC准确性的识别性能较差。健康老龄化没有显著影响,老年人和年轻人在快速球任务和行为2AFC任务中的表现相当。阿尔茨海默病的早期诊断提供了早期治疗的可能性。快速球提供了一种检测识别反应的替代方法,有望在行为表现缺陷尚不明显的阶段作为疾病病理的功能标记。它是被动的,无创的,快速和使用廉价的,可扩展的EEG技术。快速球为痴呆的识别评估提供了一种新的强有力的方法,并为早期诊断工具的开发打开了一扇新的大门。本文发表在BRAIN杂志。

    03
    领券