定义一个结构体指针,结构体指针中有一个成员为指针变量,那么此结构体变量指向指针变 量地址是什么意思

struct A{int *m;}M;如果M->m代表什么
2024-12-15 00:07:34
推荐回答(3个)
回答1:

同学你好,这样是不对的。访问结构体有两种方法。
第一种,是通过变量名访问。格式是,变量名加上. 例如你例子中的 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不是一个整数,是一个地址,访问这个地址,它是一个整型数。
说了这么多,希望你明白,指针没啥特殊,就是地址。 如果你什么float*p ,那么初始化之后,对它访问,得到的就是一个浮点型的数
ok,打字累啊~~~

回答2:

代表的就是指针m所指向的地址。。你的指针m还没具体指向哟

回答3:

M->m是非法的,M.m才是正确的!M.m只是一个整形的指针,那就要看你指向哪一个整形的数了。