我是靠谱客的博主 无私奇迹,最近开发中收集的这篇文章主要介绍C语言---常见错误与语言规范常见错误与语言规范,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

转载标明出处!

常见错误与语言规范

常见错误

变量名错误
  • 变量名不能使用关键字
int double// 编译失败
  • 变量名不能和函数名同名
int printf;
  • 变量没定义,就直接使用
parm = 20;
  • 变量的输入与使用顺序不当
int age;
int sum;
    sum = age + 16;
    scanf("%d", &age);
    printf("%dn", sum);

image-20210317131707185

  • 变量严格区分大小写
int c = 5;
printf("%d", C);
  • 忘了加分号 ( ; ) (;) ;
int c = 5
标准输入与输出
  • 变量计算,忘了加占位符。
int c = 5;
int d = 5;
// 计算相加之和
printf("sum = c + d");
  • 输入字符的格式与要求不一致
scanf("%d%d%d", &c1, &c2);
  • 忘了加取址符,隐藏错误。
int c;
scanf("%d", c);

语法规范

  • switch…case 由于粗心漏写 break 语句。
swich(num)
{
    case 0: printf("A -Bn");
    case 1: printf("C -Dn");
    case 2: printf("E -Fn");
    case 3: printf("G -Hn");
    default:printf(" ");
}

应写成:

swich(num)
{
    case 0: {printf("A -Bn"); break;}
    case 1: {printf("C -Dn"); break;}
    case 2: {printf("E -Fn"); break;}}
    case 3: {printf("G -Hn"); break;}
    default: {printf(" ");}
}

常见错误提示信息

常见错误

error: array subscript is not an integer(数组下标不是整数)

错误写法:

int arr[100];
double i = 3.0;

    arr[i];

报错信息:

image-20210317140238677

推荐修改成:

int arr[100];
int i = 3.0;

    arr[i];
error: expected declaration or statement at end of input(花括号不匹配)

错误写法:

    int param_1 = 1;
    if(param_1 == 1) {
        if(param > 0) {
    }

报错信息:

image-20210317141144296

推荐修改成:

int param_1 = 1;
    if(param_1 == 1) {
        if(param > 0) {
            // 请输入
        }
    }
error: redefinition of ‘fun_a’(函数重复定义)

错误写法:

void fun_a(void)
{

}

void fun_a(void)
{

}

报错信息:

image-20210317141544873

推荐修改成:

void fun_a(void)
{

}
error: ‘a’ undeclared (first use in this function)(a 变量未声明)

错误写法:

a = 1;

报错信息:

image-20210317141836705

推荐修改成:

int a = 1;
error: expected ‘)’ before ‘{’ token(缺少园括号)

错误写法:

int sum = 0;
    if(((sum * 100 + 10) == 100) {}

报错信息:

image-20210317144818006

推荐修改成:

int sum = 0;
    if(((sum * 100) + 10) == 100) {}

段错误

​ 段错误是计算机软件运行过程中出现一段特殊的错误。当程序试图访问一段不允许访问(只读)的内存区域会发生段错误。

使用未经初始化或已释放的地址
#include <stdio.h>

int main(int argc, const char* argv[])
{
    int param = 100;
    int *str = &param;

    str = NULL;
    printf("str = %dn", *str);
    system("pause");
    return 0;
}
访问受系统保护的内存地址
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int *str = (int *)0X20000000;
    *str = 1000;
	system("pause");

    return 0;
}
访问只读的内存
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char *str = "hello";
    *str = "hello kkb";

    printf("%sn", str);
    system("pause");

    return 0;
}
数组越界
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int arr[10] = {0};

    for(int i = 0; i < 100; i++) {
        arr[i] = 100;
    }
    system("pause");
    return 0;
}
堆栈溢出
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int arr[100000000] = {0};
    system("pause");
    return 0;
}

常见警告

warning: implicit declaration of function ‘printf’

错误写法:

int main()
{
    printf("Hello!n");

    return 0;
}

报错信息:

image-20210317142312323

推荐修改成:

#include <stdio.h>

int main()
{
    printf("Hello!n");

    return 0;
}
warning: implicit declaration of function ‘fun_a’ [-Wimplicit-function-declaration]

错误写法:

#include <stdio.h>

int main()
{
    fun_a();
    return 0;
}

void fun_a(void) {}

报错信息:

image-20210317145105146

推荐修改成:

#include <stdio.h>

void fun_a(void);

int main()
{
    fun_a();
    return 0;
}

void fun_a(void) {}

最后

以上就是无私奇迹为你收集整理的C语言---常见错误与语言规范常见错误与语言规范的全部内容,希望文章能够帮你解决C语言---常见错误与语言规范常见错误与语言规范所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部