| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 326 人关注过本帖
标题:帮忙找找错误
只看楼主 加入收藏
nixk
Rank: 2
等 级:论坛游民
帖 子:32
专家分:12
注 册:2014-9-10
结帖率:83.33%
收藏
 问题点数:0 回复次数:6 
帮忙找找错误
程序代码:
#include <stdio.h>
#include <stdlib.h>

void
main(void)
{
    int i = 0;
    int *n = (int *)malloc(10 * sizeof(int));
    for(i = 0;i < 10;i++)
        n[i] = i;
    for(i = 0;i < 10;i++)
        printf("%d",*n+i);
        printf("\n");
//=======================================================
    char *s = (char *)malloc(10);
    scanf("%s",s);
    printf("%s",s);
}
这两部分一起写就会出错,求解,单独编译就不会有问题
2014-09-25 18:11
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:0 
对指针s的定义要放在函数体的开头,C++允许这样做,但C不允许。

坚持----------------------------------唯一的道路
shit ! ! !
2014-09-25 18:20
nixk
Rank: 2
等 级:论坛游民
帖 子:32
专家分:12
注 册:2014-9-10
收藏
得分:0 
只是指针比较特别吗 别的变量随意放行不行哦
2014-09-25 18:26
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:0 
不会试吗?

坚持----------------------------------唯一的道路
shit ! ! !
2014-09-25 18:28
dcl2014
Rank: 4
等 级:业余侠客
威 望:1
帖 子:58
专家分:273
注 册:2014-9-20
收藏
得分:0 
我觉得这个程序没什么没错啊 只是动态内存的分配 没有手动释放 释放之后就还了啊
2014-09-25 20:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:0 
极度古老的C标准以及那时代的编译器,要求变量必须在栈前端声明。
但现在的C标准以及当代的编译器,并不要求这样了,并且在C标准中明确指出“变量在栈前端声明”属于不赞成和当摒弃的行为。

你的代码不是那么好
1。void main 不是标准所规定的,标准规定的只有 int main
2。int *n = (int *)malloc(10 * sizeof(int)); 中的强制转化虽然不属于语法错误,但在严格的代码审查工具中都算作冗余设计错误。你可以思考一下为什么C语言要规定 void* 可以隐式转化为任何指针类型,就是为了避免出现这种冗余设计错误。
3. 不算你错,但i++最好为++i
4。printf("%d",*n+i); 应当是 printf("%d",*(n+i) ); 吧
5。printf("\n"); 在代码排版上,应该和上上句对齐,而不是和上句对齐吧。
6。不算你错,scanf("%s",s) 出于安全起见,最好改为 scanf("%9s",s);
2014-09-26 10:15
fogmaple
Rank: 4
来 自:江西省赣州市于都县
等 级:业余侠客
威 望:1
帖 子:119
专家分:233
注 册:2014-7-28
收藏
得分:0 
看下编译上显示是什么
2014-09-26 14:02
快速回复:帮忙找找错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018916 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved