Tag: 初始化

在C中,为什么我不能在声明后将字符串赋值给char数组?

这一直困扰着我。 struct person { char name[15]; int age; }; struct person me; me.name = “nikol”; 当我编译时,我收到此错误: 错误:从类型’char *’分配类型’char [15]’时出现不兼容的类型 我错过了一些明显的东西吗?

联盟可以在声明中初始化吗?

例如,假设我们有一个联盟 typedef union { unsigned long U32; float f; }U_U32_F; 当声明了这个union类型的变量时,有没有办法设置初始值? U_U32_F u = 0xffffffff; // Does not work…is there a correct syntax for this?

switch语句中的变量定义

在下面的代码中,为什么变量i没有赋值1 ? #include int main(void) { int val = 0; switch (val) { int i = 1; //i is defined here case 0: printf(“value: %d\n”, i); break; default: printf(“value: %d\n”, i); break; } return 0; } 当我编译时,我得到一个警告, i尽管int i = 1; i仍未被初始化int i = 1; 这清楚地初始化了它 $ gcc -Wall test.c warning: ‘i’ is used uninitialized […]

在C中初始化变量

我知道有时如果你没有初始化一个int ,你会得到一个随机数,如果你打印整数。 但是将所有内容初始化为零似乎有点愚蠢。 我问,因为我正在评论我的C项目并且我非常直接进行缩进并且它完全编译(90/90谢谢Stackoverflow)但我希望在样式点上得到10/10。 所以,问题是:何时适合初始化,何时应该声明一个变量: int a = 0; 与 int a;

分配结构字段时,“错误:赋值给表达式,数组类型错误”(C)

我是初学C程序员,昨天我学习了C结构的使用以及这些结构可能应用于特定问题的解决方案。 然而,当我尝试使用我的C IDE(Codeblocks 16.01)来学习C编程的这个方面时,我遇到了一个奇怪的问题。 代码如下: #include #define N 30 typedef struct{ char name[N]; char surname[N]; int age; } data; int main() { data s1; s1.name=”Paolo”; s1.surname = “Rossi”; s1.age = 19; getchar(); return 0; } 在编译期间,编译器(Windows下的GCC 4.9.3-1)向我报告了一个错误 “错误:赋值给表达式,数组类型错误” 在指导上 s1.name=”Paolo” s1.surname=”Rossi” 如果我这样做的话 data s1 = {“Paolo”, “Rossi”, 19}; 有用。 我究竟做错了什么?

uninitiliazed变量如何获得垃圾值?

当我们创建一个变量并且不对其进行初始化时,会为其分配一些称为垃圾值的 (随机)数字。 如何将此值分配给变量? 这背后的整体概念/机制是什么? 这只发生在C吗?

在C中的单独函数中初始化指针

我需要做一个简单的事情,我过去常常用Java做过很多次,但是我坚持使用C(纯C,而不是C ++)。 情况如下: int *a; void initArray( int *arr ) { arr = malloc( sizeof( int ) * SIZE ); } int main() { initArray( a ); // a is NULL here! what to do?! return 0; } 我有一些“初始化”函数,它应该给一些指定的指针分配一些分配的数据(无关紧要)。 我应该如何给一个函数指针以便对这个指针进行修改,然后可以在代码中进一步使用(在该函数调用之后返回)?

未初始化的整数在c中是否始终默认为0?

我正在阅读nginx的源代码并发现它没有初始化许多数值变量,包括ngx_int_t ngx_last_process; ,这里ngx_int_t定义为long int #if 0 ngx_last_process = 0; #endif 那么@Igor Sysoev认为没有必要进行初始化? 但在程序中它假定默认值为0 : for (s = 0; s < ngx_last_process; s++) { if (ngx_processes[s].pid == -1) { break; } } 是否保证未初始化的变量在c中将具有0值?

数组类型 – 指定/用作函数参数的规则

当我需要将一个数组传递给一个函数时,似乎所有以下函数声明都可以工作 void f(int arr[]) void f(int arr[4]) // is this one correct? 为了这: int a[]={1,2,3,4}; f(a); 但是当我将一个数组分配给另一个数组时,它就失败了 int a[]={1,2,3,4}; int b[4] = a; // error: array must be initialized with a brace-enclosed initializer 那么为什么作为函数的参数传递的数组是可以的,但是在简单赋值的rhs上使用是错误的?

通过malloc进行VLA和动态内存分配有什么区别?

我很好奇这个: 有什么不同之处: const int MAX_BUF = 1000; char* Buffer = malloc(MAX_BUF); 和: char Buffer[MAX_BUF];