Tag: 初始化

在while循环条件下分配值

我在维基百科上找到了这段代码。 #include int main(void) { int c; while (c = getchar(), c != EOF && c != ‘x’) { switch (c) { case ‘\n’: case ‘\r’: printf (“Newline\n”); break; default: printf (“%c”,c); } } return 0; } 我很好奇表达用作while循环的条件: while (c = getchar(), c != EOF && c != ‘x’) 它的作用非常明显,但我以前从未见过这种结构。 这是特定于while循环吗? 如果没有,解析器/编译器如何确定逗号分隔表达式的哪一侧为while循环返回布尔值?

初始化字符串数组

初始化char**的正确方法是什么? 我在尝试时遇到覆盖错误 – 未初始化指针读取(UNINIT): char **values = NULL; 要么 char **values = { NULL };

C双字符指针声明和初始化

我总是这样宣告 char *c = “line”; 和…一样 char c[] = “line”; 所以我做到了 char **choices = { “New Game”, “Continue Game”, “Exit” }; 这给了我一个不兼容的指针类型,在哪里 char *choices[] = { “New Game”, “Continue Game”, “Exit” }; 没有。 理解这个有什么帮助吗?

关于未初始化指针指向任何地方这一事实的困惑

#include int main(void) { int *ptr; printf(“%p”, ptr); // Error: uninitialized local variable ‘ptr’ used // Output is “0” } 我正在阅读有关空指针的C-FAQ 。 它说未初始化的指针可能指向任何地方。 这是否意味着它指向内存中的随机位置? 此外,如果此声明为真,如果我尝试printf(“%p”,ptr) ,为什么会出现错误? 由于未初始化的指针ptr指向某个随机位置,似乎它必须打印出这个随机位置!

解释这个C程序的输出

在C拼图中找到了这段代码。 #include int main() { int a=1; switch(a) { int b=20; case 1: printf(“b is %d\n”,b); break; default:printf(“b is %d\n”,b); break; } return 0; } 输出: b is 51 似乎无法理解这个输出..

在C-still工作中未在for循环条件中声明的变量

我编写了下面的代码来查找C中所有数字的总和,当我编译并运行它时,它成功了。 但是,后来才意识到我没有在for循环的条件中为变量’ n ‘ 输入任何值 。 即使没有为条件变量赋值,我也很困惑这个程序是如何工作的。 我想澄清一下。 #include void main() { int no,a,b,n,sum=0; printf(“Enter the number to be added”); scanf(“%d”,&no); for(int i=0;i<n;i++) { a=no%10; b=no/10; sum=a+sum; no=b; } printf("The sum is %d",sum); }

C struct自动初始化值,数组初始化

如果我有两个结构 typedef struct { int number_of_lines; char lines[MAX_CHAPTER_LINES][MAX_STR_SIZE + 1]; } Chapter; typedef struct { char name[MAX_STR_SIZE + 1]; int number_of_chapters; Chapter chapters[MAX_CHAPTERS]; } Book; 我创建了一个章变量: Chapter x1; 它的两个成员的价值将被初始化为什么? 它是垃圾吗? 还是零? 在我的代码中,我得到0为int ,但我的TA告诉我这将是垃圾? 另外,如果我要声明一个章节数组: Chapter chapters[30]; 是否会填充30个具有0 / NULL值元素的结构? 或者用垃圾值元素初始化?

如何在不使用循环的情况下在C中初始化N维数组

我想初始化一个3 x 3矩阵,前两行为0,最后一行为1。 我已经声明了一个二维数组int matrix[3][3] 我想初始化它而不使用循环,如下所示 0 0 0 0 0 0 1 1 1 我还想要一个N dimiensional数组的解决方案

如何在程序开始时声明

在下面的清单中,尝试在调用main()函数之前声明矩形“r”会导致错误。 error: ‘r’ does not name a type rx = 150; 为什么必须在main()之后声明“r”? #include int main (int argc, char** argv) { // Creat a rect at pos ( 50, 50 ) that’s 50 pixels wide and 50 pixels high. SDL_Rect r; rx = 150; ry = 150; rw = 200; rh = 100; SDL_Window* window = […]

如果C中的语句和垃圾值

我是C编程的新手。我知道这是一个非常简单的问题,但我需要一些建议。 我正在使用控制结构if statement 。 我遇到了一个例子 这是代码: – #include int main() { int a = 200, b, c ; if (a >= 300) { b = 100 ; c = 200 ; } printf ( “b=%d\nc=%d”, b, c ) ; return 0; } 而这个的输出是: – b=32767 c=0 在这里,我期待输出为两个值为零。 通过查看此输出,我很惊讶为什么变量b的垃圾值。 这背后的原因是什么?或者我以错误的方式声明变量。 这背后的整个情景应该是什么?