Tag: 无效

指向多种类型的指针数组,C

使用malloc可以有多个类型的数组吗? 编辑: 目前我有: #include #include #include #define int(x) *((int *) x) int main() { void *a[10]; a[0] = malloc(sizeof(int)); int(a[0]) = 4; char *b = “yola.”; a[1] = malloc(strlen(b)*sizeof(char)); a[1] = b; printf(“%d\n”, int(a[0])); printf(“%s\n”, a[1]); } 但它很乱。 其他方法? 编辑:清理了一下。

奇怪的使用虚空

我一直在浏览一些C源代码,并注意到以下内容: void some_func (char *foo, struct bar *baz) { (void)foo; (void)baz; } 为什么在这里使用void ? 在表达式明确指出该值被丢弃之前,我知道(void) ; 但有人可以解释一下这种用法的理由吗?

int main()和void main()如何工作

我是C语言的初学者。 任何人都可以使用示例详细解释main(),int main(),void main(),main(void),void main(void),int main(void)如何在C语言中工作? 正如在我们使用void main()时发生的事情以及当我在简单语言中使用int main()时发生的事情等等。 我知道,但无法理解它在做什么: main() – 函数没有参数 int main() – 函数返回int值 void main() – 函数返回任何内容等。 当我使用int main()返回0编写简单的hello world时,它仍然给出与使用void main()时相同的输出,那么它是如何工作的? 它的应用是什么?

无效铸造有什么作用?

我正在阅读一些源代码,这就出现了; struct Cookie * Curl_cookie_add(struct SessionHandle *data, /* rest of params were here */) { /* unrelated things were here */ #ifdef CURL_DISABLE_VERBOSE_STRINGS (void)data; #endif /* rest of function goes here */ } 如您所见,void casted指针,甚至不分配给变量。 我想知道这是什么目的。

当printf是变量的地址时,为什么要使用void *?

我在printf()看到了(void*)一些用法。 如果我想打印变量的地址,我可以这样做: int a = 19; printf(“%d”, &a); 我想, &a是a只是一个整数的地址,对吧? 我读过的很多文章都是这样的: printf(“%p”, (void*)&a); %p代表什么? (一个指针?) 为什么要使用(void*) ? 我不能用(int)&a代替吗?

将int转换为void *或反之亦然意味着什么?

从存储器的角度来看,将整数值转换为void*或反之亦然? 我的理解是void*是一个未指定长度的内存块的地址。 这似乎就像比较苹果和橘子一样。 int myval = 5; void* ptr = (void*)myval; printf(“%d”,(int)ptr); 我意识到我应该给出使用它的确切上下文。 int main(int argc, char* argv[]) { long thread; /* Use long in case of a 64-bit system */ pthread_t* thread_handles; /* Get number of threads from command line */ if (argc != 2) Usage(argv[0]); thread_count = strtol(argv[1], NULL, 10); if (thread_count MAX_THREADS) […]