c语言用户登录程序问题

C语言问题:为什么下面C语言代码是非法的 int x[3]; x=(int )malloc(sizeof(int)); | Hello world!小组 | 果壳网 科技有意思
126848人加入此小组
如题想知道根本的原理是什么。。。各位大神求指导 求醍醐灌顶 求轻虐 --------------------------------好久不看C 看不明白了都。。。
+ 加入我的果篮
typeof(int)=inttypeof(x)=int[3]类型不同
x是数组x[3]的地址,不是左值。而“=”左边必须是左值才行。看编译时提示的错误就能明白。
一个数组, 你想给它赋值一个指针, 合法才邪门呢
引用 的话:typeof(int)=inttypeof(x)=int[3]类型不同数组名不是代表了首地址吗? 我以为x是个地址呢。。。
x是地址,但是不能赋值
引用 的话:x是数组x[3]的地址,不是左值。而“=”左边必须是左值才行。看编译时提示的错误就能明白。对对,编译时提示的是左值的问题~~左值不就是地址值吗? x如果是地址,怎么不可以是左值呢?应该写成&x=(int)malloc(3*sizeof(int))吗?
引用 的话:x是地址,但是不能赋值呜呜呜~~为神马啊~?
引用 的话:呜呜呜~~为神马啊~?你定义数组时系统已经给你划分了一块内存了,x是个常量,没法赋值
左值必须是变量
引用 的话:你定义数组时系统已经给你划分了一块内存了,x是个常量,没法赋值哦~~就是说 定义变量以后 它的地址没法改了是吗~!? 好神奇啊~那 &x=(int *)malloc(sizeof(int));也不对 因为x地址不能改了 对吧~
换句话来说对于系统来说x就是一个数,你要给x赋值就相当于int a=2;1=2;是没法操作的
引用 的话:那&x=(int *)malloc(sizeof(int));也不对 因为x地址不能改了 对吧~是的,一个道理
引用 的话:是的,一个道理明白了~~O(∩_∩)O谢谢你~~
@ Nano 我明白啦~~也谢谢你们哟~O(∩_∩)O~
我想说的是因为数据类型不同 贝爷您不去荒野求生么..
x[3]中的x不是变量,不能赋值。可以用int *x。
(C)2016果壳网&&&&京ICP证100430号&&&&京网文[-239号&&&&新出发京零字东150005号查看: 10241|回复: 9
C语言问题:输入一批整数,统计出其中的正数与负数噶个数,输入0结束
输入一批整数,统计出其中的正数与负数噶个数,输入0结束;
这个题目我不知道为什么编出来运行后,无法统计个数;
int x,i,j;
printf(\&输入整数\&);
scanf(\&%d\&,&x);
while(x!=0)
&&if (x&0) i+=1;
& &else j+=1;
printf(\&%d,%d\&,i,j);
这个程序有问题吗?
#include&stdio.h&
#include &conio.h&
void main()
int x,i,j;
&&printf(&输入整数:&);
&&i = j = 0;
&&while(x!=0)
& & scanf(&%d&,&x);
& & if (x&0) i++;
& & else if(x&0)j++;
&&printf(&整数:%d\n负数:%d\n&,i,j);
&&getch();
这样还不是不可以
头像被屏蔽
提示: 该帖被管理员或版主屏蔽
引用第2楼johnhxz于 13:20发表的 :
这样还不是不可以
VC6.0编译通过!!!!!!
我是用Turbo C的
引用第5楼johnhxz于 15:40发表的 :
我是用Turbo C的嘎嘎,换VC.笨
引用第3楼星晨缘于 13:25发表的 :
有兴趣可以到我的论坛看看!
一些注释吧!
.......发现广告,罚款1000,给我就可以了.....HOHO
在Turbo C的编辑环境状态下输入以下程序段即可:
#include&stdio.h&
 int i=0,j=0,x;
&&printf(&请输入整数:&);
&&while(x!=0)
& & scanf(&%d&,&x);
& & if (x&0)
   i++;
& & else if
   j++;
&&printf(&整数%d个\n负数%d个\n&,i,j);
#include &stdio.h&
&&int i,j,x;
&&printf(&请输入整数:&)
& & scanf(&%d&,&x);
& & if (x&0)
& && &i++;
& & else if (x&0)
& && &j++;
&&}while(x);& &
&&printf(&正数的一共有 %d ,负数一共有 %d 。\n&,i,j);
Powered by一个C语言指针比较大小的问题 - 开源中国社区
当前访客身份:游客 [
当前位置:
& 3 void reverse_char(char *str){
& 4&&&& char *last_
& 5&&&& last_char =
& 6&&&& while(*last_char != '\0'){
& 7&&&&&&&& last_char++;
& 9&&&& last_char--;
&10&&&& while(str & last_char){
&11&&&&&&&& char temp = *
&12&&&&&&&& *str++ = *last_
&13&&&&&&&& *last_char-- =
&18 int main(void){
&20&&&& char str[] = &hello&;
&21&&&& reverse_char(str);
&22&&&& printf(&%s\n&, str);
&23&&&& return 0;
这个反转字符的逻辑很简单,但有点不明白的就是第10的while(str & last_char)这句,
指针存放的内容不是类似于1000H, 2000H 这样的数据的么?怎么就是可以像数字那样当成整形数据那样比较大小了?还是说死记就行了?
共有17个答案
<span class="a_vote_num" id="a_vote_num_
地址是可以比较的:
#include &stdio.h&
#include &string.h&
void reverseString( char *str )
char *temp =
while ( *str ){
while ( temp & str ){
printf(&temp:%u--%c
str:%u--%c\n&, temp, *temp, str, *str );
*temp++ = *
int main( void )
char str[] = &hello world&;
reverseString( str );
printf(&\n%s\n&, str );
要学会自己调试.楼主加油.
<span class="a_vote_num" id="a_vote_num_
这个翻转不好
<span class="a_vote_num" id="a_vote_num_
指针其实就是内存地址的一种抽象说法, 地址是可以比较大小的
<span class="a_vote_num" id="a_vote_num_
你不觉得2000H比1000H大么?
<span class="a_vote_num" id="a_vote_num_
你要弄懂数据在内存中的存放方式才行
<span class="a_vote_num" id="a_vote_num_
指针是个地址,地址是个数字,自然可以比较大小。
<span class="a_vote_num" id="a_vote_num_
楼主建议把算法研究清楚,对应语言的语法使用说明,就搞清楚了。哈哈。
<span class="a_vote_num" id="a_vote_num_
楼主代码写的是出神入化.小生佩服.&敢问是自己想出来的吗?
<span class="a_vote_num" id="a_vote_num_
引用来自“正想着改什么名好”的答案楼主代码写的是出神入化.小生佩服.&敢问是自己想出来的吗? 不是我想出来,抄社区一个朋友来研究的
佩服是吧?来!跪地,斟茶,叩头,资质差了点,不过看在你为我顶贴的份上,为师勉强收你为徒
<span class="a_vote_num" id="a_vote_num_
引用来自“雷朝建”的答案 地址是可以比较的:
#include &stdio.h&
#include &string.h&
void reverseString( char *str )
char *temp =
while ( *str ){
while ( temp & str ){
printf(&temp:%u--%c
str:%u--%c\n&, temp, *temp, str, *str );
*temp++ = *
int main( void )
char str[] = &hello world&;
reverseString( str );
printf(&\n%s\n&, str );
要学会自己调试.楼主加油. 我的天!明白,就是你了
更多开发者职位上
有什么技术问题吗?
elson10...的其它问题
类似的话题(疯言疯语君)
(黑山老妖)
第三方登录:}

我要回帖

更多关于 c语言难题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信