C语言不允许使用不完整的类型报错是啥意思啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言不允许使用不完整的类型报错是啥意思啊相关的知识,希望对你有一定的参考价值。

参考技术A

定义了一个指向数组的指针,由于数组长度不版确定,无法计算计算指针单位长权度,因此编译器说结构定义不完整。解决方法如下:

1、变量的指针就是变量的地址。存放变量地址的变量是指针变量。即在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。

2、为了表示指针变量和它所指向的变量之间的关系,在程序中用“*”符号表示“指向”。

3、定义指针变量对指针变量的定义包括三个内容,其中,表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。

4、int *p:表示p是一个指针变量,它的值是某个整型变量的地址。或者说p指向一个整型变量。至于p究竟指向哪一个整型变量,应由向p赋予的地址来决定。

5、再如:int *s是指向整型变量的指针变量,float *d是指向浮点变量的指针变量.,char *g;是指向字符变量的指针变量。

请问C语言中while(!x)的(!x)是啥意思啊?

--x的意bai思是x=x-1;!是逻辑非运du算,!(--x)是循环条件

while(!(--x));

表示当x=x-1运算后,如果x=0那么因为非运算,那么x不等于0,循环继续;

如果x=x-1运算后,如果x不等于0,则!(--x)=0,结束循环

在C里,非0为“逻辑真”,用1表示,0是“逻辑假”;所以!x==0实质就是x!=0的意思。所以,while(!x==0)等效于while(x!=0),即当x不等于0时继续循环,一直循环到x变为0时结束。

扩展资料:

运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。如果运算符优先级相同,则使用从左到右的左联顺序。

$a = 3 * 3 % 5; // (3 * 3) % 5 = 4$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2$a = 1;$b = 2;$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5

?> 使用括号可以增强代码的可读性。

注:尽管 ! 比 = 的优先级高,php 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的输出被赋给了 $a。

参考资料来源:百度百科-运算符

参考技术A !是“逻辑非”操作符,所以!x就是给x取反。在C里,非0为“逻辑真”,用1表示,0是“逻辑假”;所以!x==0实质就是x!=0的意思。所以,while(!x==0)等效于while(x!=0),即当x不等于0时继续循环,一直循环到x变为0时结束。 参考技术B 回答

亲,您好,我正在为您查询相关信息,请您耐心等待一下,会在六分钟之内回复您,不要着急哦

您好,第一个程序中,一共有两个while,是循环的嵌套,外循环是do……while语句,循环体只有一句,也就是一个while语句,这一句形成一个完整的循环,由于它在循环的内部,所以也叫内循环。\\x09int x=0,y=6; \\x09do \\x09while(--y)x++; \\x09while(y--); 看一下它的运行过程:先赋值x=0,y=6执行do循环运行while(--y),先计算--y,自减后y=5,满足循环条件;执行x++,自增后x=1回到 while(--y),先计算--y,自减后y=4,满足循环条件;执行x++,自增后x=2再回到 while(--y),先计算--y,自减后y=3,满足循环条件;执行x++,自增后x=3第四次回到 while(--y),先计算--y,自减后y=2,满足循环条件;执行x++,自增后x=4第五次回到 while(--y),先计算--y,自减后y=1,满足循环条件;执行x++,自增后x=5第六次回到 while(--y),先计算--y,自减后y=0,不满足循环条件;接下来执行while(y--),先判断后自减,因为这时y=0,停止外循环,不回do语句了。自减后y=-1。最后执行打印语句:printf("%d,%d\\n",x,y); ,因为这时x=5,y=-1,打印出最终程序运行结果为5,-1 。这就是两个while的作用。

希望我的回答对您有所帮助喔,如果有问题没解答可以留言或者再次咨询,我会竭尽全力帮助到您。

参考技术C x是一个变量·~
(条件判断时,非0值为真,0值为假)
当x为非0值(也就是说不是0的时候),!x为假 (因为x为真,所以!x为假)

相反,x为0的时候,!x为真

总的来说while中的x为0才执行while中的循环体
参考技术D x==0
while(x) 和while(x!=0)一个意思
while(!x)和 while(x==0)一个意思
希望对你有所帮助,不懂可以追问哦~追问

这种情况下都表示==0吗?为什么这里的!不表示非啊?

追答

恩,对的,在计算机逻辑语言中,0表示错误,1表示正确,!表示非,while(x) 是while(x!=0)的简写,同样while(!x)是 while(x==0)的简写,因为它表示非x!=0,即x==0,错误换句话说,在逻辑语言中,==1意思是正确,==0意思是错误

希望对你有所帮助~

追问

谢谢,明白了。

追答

不客气,昨天没看到~

以上是关于C语言不允许使用不完整的类型报错是啥意思啊的主要内容,如果未能解决你的问题,请参考以下文章

C语言 不允许使用不完整的类型

C语言 不允许使用不完整的类型

c++mfc为何报错不允许指针指向不完整的类类型?

C语言中的typedef是啥意思啊

maven mvn compile 报错是啥原因

c语言中,定义数组和引用数组时,其数组的下标的数据类型分别允许是啥?