[英]Can I use a class variable in python similarly to how a struct variable in C is used?
[英]How can I check if a variable in a struct is not used in C?
這是我到目前為止的代碼。
我想知道結構中的某個變量是否為空。 我將要創建一個結構,其中一些變量被填充而另一些變量不被填充,並且需要知道哪些變量需要我執行某些操作而哪些不需要。
#include <stdio.h>
#include <stdlib.h>
struct nums {
int a;
int b;
int c;
int d;
} typedef numbers;
int main() {
numbers bob;
bob.a = 69;
if (bob.b == NULL) {
printf("no number stored in b");
}
return 0;
}
但是我得到了錯誤
warning: comparison between pointer and integer
有任何想法嗎?
您嘗試執行的操作在C語言中沒有意義。
唯一的解決方案是分析您的代碼,並通過邏輯分析證明已使用(或未使用)某些變量。
無論如何,我將給出兩個可以幫助您的想法。
1.初始化為虛擬值
我們可以在程序處理的值中選擇一個我們不知道它有意義的變量類型范圍內的值。
例如,對於int
類型,可以選擇INT_MIN
作為這樣的偽值。
這是int
類型可以容納的最負值。
在32位2的互補int
此值為-2147483648
,可能是您的情況。
[ INT_MAX
在<limits.h>
定義,因此您必須#include
它。]
#include <limits.h>
numbers bob = { INT_MIN, INT_MIN, INT_MIN, INT_MIN};
if (bob.b == INT_MIN) puts("Unused object.");
只要您在程序的其余部分中都沒有將INT_MIN
作為有效值,該方法就可以使用。
2.改變您的方法
除了使用int
,還可以使用pointer to an int
的pointer to an int
:
#include <stdio.h>
#include <stdlib.h>
typedef struct { int *a, *b, *c, *d; } pnumbers;
int main(void) {
pnumbers bob = { NULL, NULL, NULL, NULL };
int val = 32;
bob.a = &val;
bob.c = malloc(sizeof(int));
bob->c = 20;
if (bob.a != NULL) printf("%d\n", bob->a);
if (bob.b == NULL) puts("Unused member");
if (bob.c != NULL) printf("%d\n", bob->c);
}
通常,無法判斷您是否實際上已將某些內容存儲在int
變量中。
但是,就您而言,您可以:
numbers bob = { 0 }; // <-- this makes a, b, c, d equal to zero
numbers bob = { 0 }; // <-- this makes a, b, c, d equal to zero
然后檢查您是否有不同於 0
:
if(bob.b == 0){ printf("no non-zero number stored in b"); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.