ZKX's LAB

结构体指针变量名 输入

2020-07-16知识8
C语言结构体定义的疑问。成员里有一个是指针变量,如果结构体变量名也是指针,那么 pArr.pBase是表示什么 C语言结构体定义的疑问。成员里有一个是指针变量,如果结构体变量名也是指针,那么 pArr.pBase是表示什么 struct Arr{ int*pBase;存储的是数组第一个元素的地址 int len;... 定义一个结构体指针,结构体指针中有一个成员为指针变量,那么此结构体变量指向指针变 量地址是什么意思 同学你好,这样是不对的。访问结构体有两种方法。第一种,是通过变量名访问。格式是,变量名加上.例如你例子中的 M就是个变量名,可以M.m 表明访问结构体里面的成员m,这里m是个指针变量。第二种,就是通过指向结构体的指针来访问。格式是,变量名加上—>。比如,我声明一个结构体指针,将它指向M。struct A*p;这里,p是一个结构体指针了,所谓指针,就是里面装的是一个地址。比如你声明了一个M名字的结构体,它可能在内存中的地址是 0x00124fff,那么你将p 的值写为0x00124fff,那就表明p指向了M。再回答你的问题,你声明了M,它的地址是0x00124fff,它里面存放了一个m变量,变量属性是整型指针,也就是说,m这个变量也是放的地址,至于放的什么值,你是不知道的,因为你没有初始化。你只要明白,指针也是变量,就是地址。比如 int a=5。它的地址是多少,&a。如果你想把m指向它,就给m赋值。m=a?不行,m是指针,只能放地址,m=a,那么,m就指向了a。你以后要改变a,可以直接通过a的名字改,也可以通过指向a的指针改。比如a=5,和*p=5,现在是等价的,因为,后面一句话的意思是,把p里面存放的地址的那个值改成5。现在你该知道了吧,其实这个题目没啥特殊,只不过,m... 结构体变量各个成员的表示方法 (*结构体指针变量).成员名 结构体指针变量->成员名 请问括号 如果已经定义2113了结构体,取名test,并且假设定义了结构体5261指针,取名*ptr typedef struct { int a;}STR;定义4102结1653构体 STR test;定义结构体变量 STR*ptr;定义结构体指针 ptr=test;指针指向结构体变量那么引用结构体里的成员a时 test.a (*ptr).a ptr->a 这三者是等价的 定义一个结构体指针变量 1、结构体指针的定义: struct node { int p;char node;char addr[30];}a,*b;2、结构体指针的使用: b=a;a.p与(*b).p 与p->num是相同的意思。a.node与(*b).node与p->node是相同的意思。a.addr与(*b).addr与p->addr是相同的意思。3、注意事项: (1)、结构体指针必须指向一个确定的结构体变量,如:p=a;(2)、通过结构体变量的指针访问结构体的方法为: a.num、(*p).num、p->num。 请教,结构体变量的名字可以赋值给一个指针吗? 要加强制类型转化就可以 p=(unsigned int)&sTemp_Data; C语言结构体定义的疑问。成员里有一个是指针变量,如果结构体变量名也是指针,那么 pArr.pBase是表示什么 如果pArr是指针要用pArr->pBase,或者(*pAddr).pBase 不能用pAddr.pBase (*pArr).pBase根据注释应该是数组的第一个元素的地址,使用前需要赋值 ((*pArr).pBase)就是数组的第一个元素,也可以这样((*pArr).pBase)[0] ((*pArr).pBase+1)就是数组的第二个元素,也可以这样((*pArr).pBase)[1] 你的程序写的太乱了,看不明白你要说什么 C语言结构体指针成员所指向的变量如何访问? 第一种写法: (*a).p=b;的优先级高于*,(*pointer)两边的括号不能少。如果去掉括号写作*pointer.memberName,那么就等效于*(pointer.memberName),这样意义就完全不对了。第二种写法: a->p=b;是一个新的运算符,习惯称它为“箭头”,有了它,可以通过结构体指针直接取得结构体成员;这也是->在C语言中的唯一用途。结构体是一种数据类型,是一种创建变量的模板,编译器不会为它分配内存空间,就像 int、float、char 这些关键字本身不占用内存一样;结构体变量才包含实实在在的数据,才需要内存来存储。下面的写法是错误的,不可能去取一个结构体名的地址,也不能将它赋值给其他变量。扩展资料:用指针引用结构体变量成员方式总结与技巧:一、(*指针变量名).成员名注意,*p 两边的括号不可省略,因为成员运算符“.”的优先级高于指针运算符“*”,所以如果*p 两边的括号省略的话,那么*p.num 就等价于*(p.num)了。因为指针变量 p 指向的是结构体变量第一个成员的地址,即字符数组 name 的首地址,所以 p 和(*p).name 是等价的。“等价”仅仅是说它们表示的是同一个内存单元的地址,但它们的类型是不同的。指针变量 p 是 struct 型的,而(*p).name 是 char*型的。... 一个指向结构体的指针,是指向结构体中最先定义的变量么? 你的概念要清楚,指向结构体的指针的值就是结构体中最先定义的那个变量的地址不错,但这指针却不指向它,而是指向这个结构体的。取第一个元素同样要用->获得,想直接用*是拿不到的,且要出错!指针承载的不光是地址,若光是地址,那还有分int*、char*、FILE*…型的必要吗? C#结构体中怎么定义一个指针变量? 本来C#就不方便用指针,你为什么要用指针?(用指针要用不安全代码,如果真要用,请百度下 C# 不安全代码。下面是用引用,而建的结构体: public struct AAA { public string A;public string B;public string C;public ListBB;C#语法初始化不能在结构体里面,所以在解析里面初始化 };public struct BBB { public string a;public string b;public string c;public dd d;};用引用的函数:如下请参考。public bool ParserXmlConfig(string xml_file,ref AAA AA)/启动解析函数要使用引用 { XmlDocument doc=new XmlDocument();XmlReaderSettings settings=new XmlReaderSettings();settings.IgnoreComments=true;忽略注释,后面有判断是否为元素节点,可不用 doc.Load(@xml_file);读XML文件 XmlNode rootElement=doc.SelectSingleNode(\"BBB\");解析根节点 return ParseBBB(rootElement,ref BB);} 结构体指针变量与结构体成员指针问题 typedef struct node AA;定义了 AA可以当作类型 struct node AA*p,a;这一句声明了两个变量 一个结构体指针 和 一个结构体。p=a;表示 结构体指针指向 结构体a的地址 p->next=a;表示 p指向的结构体 a 中的 结构体指针 也指向 a所在的地址

随机阅读

qrcode
访问手机版