指標MyStruct* ps指向&s。僅 *ps在不訪問任何結構成員的情況下取消參考后的值是多少(如果有) MyStruct?
#include <stdio.h>
typedef struct {
char c;
int x;
double d;
} MyStruct;
int main(void) {
MyStruct s = {'a', 132, 456.789};
MyStruct* ps = &s;
printf("Member c has a value of %c\n",(*ps).c);
printf("Member x has a value of %d\n", (*ps).x);
printf("Member d has a value of %f\n", (*ps).d);
/* printf("Here i want to print the outcome of\n", *ps); */
}
編輯:我終于得到了解決方案!我知道它包含什么作為價值。這是字符'a'。我printf("%c\n", *ps得到了里面的價值*ps。我知道我收到了警告,但我現在仍然知道它包含什么。評論和其他答案也非常有幫助!
uj5u.com熱心網友回復:
定義
MyStruct s = {'a', 132, 456.789};
在記憶體中創建一個塊,看起來像
--- | c | --- | x | --- | d | ---
然后定義
MyStruct* ps = &s;
將其修改為如下內容:
---- ----
| 附言 | --> | c |
---- ----
| x |
---
| d |
---
的“值”是結構物件ps的第一個成員的地址。s
uj5u.com熱心網友回復:
*ps表示整個結構。的“值”*ps是其所有成員的值的聚合。C 標準沒有提供任何列印它的方法,但是您可以將它分配給相同型別的另一個結構,將它傳遞給接受該型別引數的函式,并從回傳型別為的函式回傳它那種。實際上,*ps與 相同s。
uj5u.com熱心網友回復:
一種思考方式是
MyStruct* ps;
是相同的
MyStruct *ps;
其中說: '*ps' 是一個 'MyStruct'
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/439016.html
上一篇:函式指標未在C中賦值
