2014-10-01 32 views
0
#include <stdio.h> 
#include <stdlib.h> 

struct student{ 
int wkTime; 
} x; 

int main(void) { 
struct student* john = malloc(sizeof(x)); 
john ->wkTime = 10; 

void* emp; 
emp = (char *) "wkTime"; 

printf("%d",john ->wkTime); 
printf("%d",john -> *(emp)); 

return 1; 
} 

我想要訪問的價值vaiable-wkTime不使用約翰 - > wkTime但使用* emp我想獲得約翰的wkTime變量的值。基本上,在我將以字符指針的形式擁有變量名的情況下。我想用它來訪問我的學生節點實例中的變量。我有一個包含成員變量名稱的字符串。我想用它來訪問成員本身

+1

這裏'struct node * john'的意思是什麼?你有沒有'struct node'? – Rustam 2014-10-01 04:30:18

+0

這裏'printf(「%d」,john - > *(emp));'emp不是你的'john'的成員,那麼爲什麼要這樣做? – Rustam 2014-10-01 04:32:01

+0

'約翰 - > wkTime'這是建議'*(john + 0)' 什麼可以解引用你的條目 - 約翰 - > *(emp)'=='*(約翰+ *(emp)) - deli妄。 此外,這個記錄是不正確的 – 2014-10-01 09:12:26

回答

4

在標準C中沒有內建的方法。編譯的二進制文件中甚至不存在大多數變量和字段名稱,因此不可能這樣做。 C通常不支持類似反射的功能。

如果你需要這樣的功能,你必須手工實現它。一種方法是編寫一個訪問器函數,該函數將指針指向結構和字段名稱,並返回值。另一個選項是名稱和字段偏移量/大小的表格。

當然,這些方法中的每一個都需要手工列出至少一次。

相關問題