精华内容
下载资源
问答
  • 原标题:C/C++入门易错点及常用小技巧1. int型:绝对值在10^9范围内的整数都可以定义成int型。2.long long型:如果long long型赋值大于2^31 -1的初值,则需要在初值后面加上LL,否则会编译错误。3.float、double输入...

    原标题:C/C++入门易错点及常用小技巧

    1. int型:绝对值在10^9范围内的整数都可以定义成int型。

    2.long long型:如果long long型赋值大于2^31 -1的初值,则需要在初值后面加上LL,否则会编译错误。

    3.float、double输入输出格式:使用printf("%f",c);语句时,%f是float和double型的输出格式。而在使用scanf输入时,float输入格式为%f,double输入格式为%lf。

    4.if条件:由于if(n)表示if(n!=0),所以if(!n)表示if(n==0)

    5.for语句:注意在C语言中不允许在for(A;B;C)语句的表达式A里定义变量(比如inta=0;的写法是不允许的),但在C++中可以

    6.数组定义:如果数组大小较大(10^6级别以上),则需要将其定义在主函数外面,否则会使程序异常退出。

    7. 数组赋初值:如果我们定义一个数组int array[10]={12,1,6,4}.可知只对数组的前四项赋值,那么后面没有赋值的元素默认为0.但如果该数组没有赋初值,数组中的每个元素都可能会是一个随机数(不一定是0)。所以如果想给整个数组都赋值为0,简单介绍以下四种方法:

    1、int array[10]={};

    2、int array[10]={0};

    3、memset函数 :memset(array,0,sizeof(array));//若数组为int array[10],则此处sizeof(array)=4*5=20,因为

    memset是按字节赋值. 格式 memset(数组名,值,sizeof(数组名));

    4、fill函数 :fill(array,array+5,8);//数组从array[0]到array[4]均被赋值为8,格式 fill(起始地址,结束地址,值);

    注意:memset()函数需头文件或. 且memset()只能为数组赋初值0和-1,因为memset()只能以字节为单位赋值fill()函数需头文件. 且fill()可以为数组或容器的某段区域赋某个任意相同的值.

    8. 二维数组赋值:若二维数组array[4][5]={{1,2,3,4,5},{2,2,3},{},{4,2,3,5}};可以看出第三行用{}跳过了(如果不加大括号是无法通过编译的)

    9. 字符数组初始化:字符数组可以通过直接赋值字符串来初始化(仅限初始化,程序其他位置不允许这样直接赋值整个字符串)

    10. 字符数组输入输出:定义char str[10]; scanf("%s",str); pritnf("%s",str); 注意字符数组在输入时不需要加&取地址运算符. 且scanf输入时%s通过空格或换行来识别一个字符串的结束

    gets用来输入一行字符串.gets识别换行符n作为输入结束,因此scanf完一个整数后如果要使用gets,需要先用getchar接收整数后的换行符;puts输出一行字符串后会紧跟一个换行(n)

    11. 字符数组长度的重要性:字符数组的长度一定要比实际存储字符串的长度至少多1,作为结束符'0'.注int型数组不需要. 且如果不是使用scanf函数的%s格式或gets函数输入字符串(例如getchar),一定要手动早输入的每个字符串后加‘0',否则printf和puts输出字符串将无法识别字符串末尾而输出一大堆乱码.

    12. sscanf与sprintf:

    sscanf : int n; char str[10]="123"; sscanf(str,"%d",&n); //sscanf写法的作用是把字符数组str中的内容以"%d"的格式写到n中(从左往右). sscanf还支持正则表达式.

    sprintf : int n; char str[10]="123"; sprintf(str,"%d",n); //sprintf写法的作用是把n以"%d"的格式写到str字符数组中(从右往左)

    13. 引用&:注意要把引用的&与取地址运算符&区分开. 引用并不是取地址的意思,引用不产生副本,而是给原变量起了个别名 .由于引用是产生变量的别名,因此常量不可以使用引用。所以:

    7fde45408b459868dccdf545910e3589.png

    其中不可以直接写成swap(&a,&b),而必须用指针变量p1和p2存放&a和&b,然后把指针变量作为参数传入.

    14. 访问结构体内的元素:

    7648072e017193aa57d5f839c702524b.png

    于是访问stu中变量的写法:

    stu.id

    stu,name

    stu.next

    访问指针变量p中的元素的写法:

    (*p).id <=> p->id

    (*p).name <=> p->name

    (*p).next <=> p->next

    15. 结构体的初始化

    7bd826debc3fb24ba23702ed358ef88d.png

    注意:如果自己重新定义了构造函数,则默认生成的构造函数就会被覆盖. 如果想不经初始化就定义结构体变量需手动加上.

    本文来源于CSDN

    技术源于积累,成功来自执着返回搜狐,查看更多

    责任编辑:

    展开全文
  • C 语言数组知识总结 数组 定义数组是有序的并且具有相同类型的数据的集合 一维数组 一般形式类型说明符 数组名常量表达式 例如 元素为 1 [ ] int a[10]; a[0]a[9]. 2常量表达式中不允许包含变量可以包含常量或符号...
  • C语言数组专题知识总结

    千次阅读 2018-12-22 16:48:20
    C语言数组专题知识点易错点总结及做题感悟 一.知识点总结 1.一维数组的定义和初始化. 注: ① C语言数组的下标都是从0开始的; ②在定义数组时不能使用变量定义数组的大小,如果前面没有对n进行宏定义 #define n 5 则...
               C语言数组专题知识点易错点总结及做题感悟
    

    一.知识点总结
    1.一维数组的定义和初始化.
    注: ① C语言数组的下标都是从0开始的;
    ②在定义数组时不能使用变量定义数组的大小,如果前面没有对n进行宏定义 #define n 5
    则a[n]则不对,因为n不是一个确定的数;
    ③在对数组定义时,不要让数组下标越界访问
    2.二维数组的定义和初始化
    注:①定义: 类型 数组名[第一维度][第二维度]
    ②初始化: 例 int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}
    3.排序和查找
    例如:按交换法将数组a的元素值按从高到低排序(冒泡排序)
    for(int i=1;i<=n-1;i++)
    {
    for(int j=1;j<=n-i;j++)
    {
    swap(a[j],a[j+1])
    }
    }
    例如:按折半查找法查找值为x的数组元素,若找到则返回x在数组中的下标位置,否则返回-1(二分查找)
    int binsearch (long num[],long x,int n) (binsearch()为函数定义)
    {
    int low=0;high=n-1;mid;
    while(low<=high)
    {
    mid=(high+low)/2;
    if(x>num[mid])
    low=mid+1;
    else if(x<num[mid])
    high=mid-1;
    else return mid;
    }
    return -1;
    }
    二.数组方面题型总结及做题感悟
    1.一维数组
    ①例如:与指定数字m相同的数的个数,一共有n个数
    for(int i=1;i<=n;++i)
    scanf(“%d”,&a[i]); //数组的输入格式
    scanf(“%d”,&m);
    for(int i=1;i<=n;++i)
    if(a[i]m) ++k;
    printf(“%d”,k);
    ②利用标记法解决问题 例如:校门外的树对需要移走的树进行标记; 开关灯中对每次处理的灯进行标记; 查找特定的值并输出第一次出现的位置
    开关灯问题:有n盏灯,有m个人,第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将3的倍数的灯做相反处理(将打开的灯关闭,将关闭的灯打开)。以后的人和3号一样,将凡是自己编号倍数的灯做相反处理。问当第m个人操作之后,哪几盏灯是关闭的,按从小到大输出编号,其间用逗号间隔
    int main()
    {
    int n,m,z=1;
    cin>>n>>m;
    memset(a,0,sizeof(a)); //初始化全部关闭
    for(int i=1;i<=m;++i)
    for(j=1;j<=n;++j)
    if(j%i
    0) a[j]=!a[j]; //编号是i的倍数的灯做相反处理
    for(int i=1;i<=n;++i)
    {
    if(a[i]) //是关闭的灯a[i]==1
    {
    if(z) z=0;
    else printf(","); //第一次不用先输出逗号
    printf("%d",i); //顺次输出关闭的灯的编号
    }
    }
    2.二维数组
    ①有些问题需要找出规律再用代码表现出来,例如:矩阵转置,图像旋转,图像模糊处理
    3.字符类型和字符数组
    ①统计数字字符个数
    char ch[256];
    gets(ch); //用gets()读入字符数组
    l=strlen(ch); //计算字符串的长度,需调用cstring库
    4.字符串与string类
    ①输入字符串 getline(cin,字符串变量) getline函数默认是碰到换行符才结束,可以读进空格
    ②判断一个字母为大写(或小写)字母,可用逻辑表达式"s[i]>='A&&s[i]<=‘Z’" (像单词替换的问题)
    ③string类型的其他常用操作
    s.insert(pos,s2) 在s下标为pos的元素前插入string类型s2
    s.substr(pos,n) 返回从s下标pos起的n个字符,类型为string
    s.erase(pos,n) 删除s下标pos起的n个字符
    s.replace(pos,n,s2) 将s下标pos起的n个字符替换为s2的字符
    s.find(s2,pos) 在s下标pos起查找s2第一次出现的位置
    ④sscanf和sprintf语句(将字符串与数字巧妙转换)
    sscanf(s,"%d",&N); 将字符串s转换成数字N
    sprintf(s,"%d",N); 将整数N转换成字符串s
    例如:char s1[10]=“1,2,3”,s2=“4,5,6”;
    int a,b;
    sscanf(s1,"%d",&a);
    sscanf(s2,"%d",&b);
    cout<<a+b<<endl;
    return 0;
    ⑤string 中的字典序(应用于按字典序输出的问题)
    比较运算符 if s1>s2 cout<<s1;
    compare()函数 if(a.compare(b)<0) 即s1<s2
    if(a.compare(b)>0) 即s1>s2
    if(a.compare(b)=0) 即s1=s2
    sort函数从小到大排序
    #include
    for(int i=0;i<n;++i)
    cin>>a[i];
    sort a[a,a+n];
    总结:数组这一章的知识可以说为我们提供了一种解决问题的新思路,尤其是字符数组和对字符串的操作更要认真把握,为后面的函数及其他算法打下基础。

    展开全文
  • c语言知识易错点小伙伴们都知道c语言不简单,但是c语言是学好计算机的基础,就让小编和大家一起来学习吧。在这里为大家准备了c语言易错点,以下仅供参考!C语言的最大特点是:功能强、使用方便灵活。C编译的程序对...

    c语言知识易错点

    小伙伴们都知道c语言不简单,但是c语言是学好计算机的基础,就让小编和大家一起来学习吧。在这里为大家准备了c语言易错点,以下仅供参考!

    4bdd17d58842dec54bed8416e94d5135.png

    C语言的最大特点是:功能强、使用方便灵活。

    C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。

    1.书写标识符时,忽略了大小写字母的区别。

    2.忽略了变量的类型,进行了不合法的.运算。

    3.将字符常量与字符串常量混淆。

    4.忽略了“=”与“==”的区别。

    5.忘记加分号。分号是C语句中不可缺少的一部分,语句末尾必须有分号。

    6.多加分号。 复合语句的花括号后不应再加分号,否则将会画蛇添足。

    7.输入变量时忘记加地址运算符“&”。

    8.输入数据的方式与要求不符。代码①scanf("%d%d",&a,&b);输入时,不能用逗号作两个数据间的分隔符②scanf("%d,%d",&a,&b);C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。

    9.输入字符的格式与要求不一致。在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。

    10.输入输出的数据类型与所用格式说明符不一致。

    11.输入数据时,企图规定精度。

    12.switch语句中漏写break语句。

    13.忽视了while和do-while语句在细节上的区别。

    14.定义数组时误用变量。

    15.在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。

    16.初始化数组时,未使用静态存储。

    17.在不应加地址运算符&的位置加了地址运算符。

    18.同时定义了形参和函数中的局部变量。

    【c语言知识易错点】相关文章:

    展开全文
  • C语言数组知识梳理

    2020-03-14 21:49:18
    一、知识梳理 1.零碎知识整理 输出地址用%s或%#x。 数组声明之后变为常量,不能放在等号左边;初值表{…}只能用于初始化。 数组元素只能逐个进行引用,不能一次性引用。 数组越界的危害: (1)会覆盖其他变量的...

    一、知识点梳理

    1.零碎知识点整理

    1. 输出地址用%p或%#x。
    2. 数组声明之后变为常量,不能放在等号左边;初值表{…}只能用于初始化。
    3. 数组元素只能逐个进行引用,不能一次性引用。
    4. 数组越界的危害:
      (1)会覆盖其他变量的值(越界短时)
      (2)会出现段错误(越界过长)
    5. a+i==&a[i]
      *(a+n)=a[n]
    6. 对于一维数组 eg:int a[5]
      a ——————表示一级地址,列指针
      &a——————表示二级地址,行指针
      &a+1—————当于偏移20(4*5)个字节
    7. 对于二维数组 eg:a[2][3]
      a ——————组起始地址,为二级地址,行指针
      a[0] —————表示a[0][0]的地址,为一级地址,列指针
      a[0]+1————表示a[0][1]的地址
      a+1—————表示下一行的地址
    8. 二维数组地址的表示方式 eg:a[2][1]
      (1)&a[2][1]
      (2)a[2]+1
      (3)*(a+2)+1
    9. 二维数组行可以缺省,但列不行,eg : int a[][5]
    10. 用字符串常量对字符数组初始化注意字符串末尾包含’\0’ eg: char ch[4]=“boy”
    11. 字符串的输入/输出
      (1)逐个进行 %c
      (2)整个进行 %s
      (3)%s 输出遇到 ‘\0’ 终止
      (4)scanf 中 %s 输入遇到 " " 或者 “\n” 终止
    12. eg:
    #include<stdio.h>
    
    int main(void)
    {
        char buf[]="Hello world!";
        char ch[]={'a','b','c','d'};
        printf("%s\n",ch);
        return 0;
     }
     
     输出为:
     abcdHello world!
    
    #include<stdio.h>
    
    int main(void)
    {
        char buf[]="Hello world!";
        char ch[]={'a','b','c','d','\0'};
        printf("%s\n",ch);
        return 0;
     }
     
    输出为:
    abcd
    
    两个例子说明了printf用%s进行输出遇到'\0'才停止
    
    1. eg:
    char buf[10]="123456789";
    printf("%.3f",buf1+3);
    
    输出结果为:
    456
    
    1. /ddd 为8进制数 d不能大于7
    2. 字符串声明时,若不赋值,则先清零
    3. 注意数组值进行交换时循环变量的控制,否则容易造成交换的值再被换回去。

    2.学习的新函数

    1.字符串处理函数

    (1)字符串输入函数gets
    格式:gets(字符数组)—建议用fgets( )
    功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加’\0’
    说明:输入串长度应小于字符数组维数
    (2)字符串输出函数puts
    格式:puts(字符数组)
    功能:向显示器输出字符串
    (输出完字符串后,再输出一个换行符)
    说明:字符数组必须以‘\0’结束
    ps:int n=100; char s[n];
    gets(s);可以改成fgets(s, n, stdin);
    gets很fgets区别:
    gets总能获得一行,并放到s指向的内存里;
    fgets仅获得一行的前n-1个字符。
    gets会把一行结尾的’\n’字符换成’\0’
    fgets保持一行字符的原样,在结尾添加一个’\0’
    (3)字符串连接函数strcat
    格式:strcat(字符数组1,字符数组2)
    功能:把字符数组2连到字符数组1后面
    返值:返回字符数组1的首地址
    说明:字符数组1必须足够大 , 连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消, 新串最后加‘\0’
    (4)字符串拷贝函数strcpy
    格式:strcpy(字符数组1,字符串2)
    功能:将字符串2,拷贝到字符数组1中去
    返值:返回字符数组1的首地址
    说明:字符数组1必须足够大 , 拷贝时‘\0’一同拷贝 ,不能使用赋值语句为一个字符数组赋值
    (5)字符串比较函数strcmp
    格式:strcmp(字符串1,字符串2)
    功能:比较两个字符串
    比较规则:对两串从左向右逐个字符比较(ASCII码),
    直到遇到不同字符或‘\0’为止
    返值:返回int型整数,a. 若字符串1< 字符串2, 返回负整数
    b. 若字符串1> 字符串2, 返回正整数
    c. 若字符串1== 字符串2, 返回零
    说明:字符串比较不能用“==”,必须用strcmp/.
    (6)字符串长度函数strlen
    格式:strlen(字符数组)
    功能:计算字符串长度
    返值:返回字符串实际长度,不包括‘\0’在内

    2.内存处理函数

    1. strncpy
    格式:strncpy(数组1,数组2,n)
    功能:把字符串2中的字符串复制到字符串1中,最多复制n个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。
    2. strncmp
    格式:strncmp(数组1,数组2,n)
    功能:比较字符串str1和str2的前n个字符。
    3. strncat
    格式:strncat(dest,src,n);
    功能:把src中的前n个字符添加到dest结尾处(覆盖原dest结尾处的’\0’),并添加新的’\0’。
    说明:src和dest所指内存区域不可以重叠,并且dest必须有足够的空间来容纳src的前n个字符串,返回指向dest的指针。
    4. strcasecmp
    格式:strcasecmp(s1,s2)
    功能:strcasecmp()用来比较参数s1 和s2 字符串,比较时会自动忽略大小写的差异。
    5. strncasecmp
    格式:strncasecmp(dest,src,n);
    功能:比较两个字符串的前n个字符,忽略大小写。
    6. memset
    格式:memset(a,’/0’,sizeof(a));
    功能:将数组a清零。
    7. memcpy
    格式:mencpy(dest,src,n);
    功能:从src的开始位置拷贝n个字节的数据到dest。如果dest存在数据,将会被覆盖。
    9. mencmp
    格式:memcmp(dest,src,n);
    功能:比较内存区域dest以及src的前n个字符

    3.其他函数

    1. sprintf
    格式:sprintf(src,格式化字符串,argument1…)
    功能:字符串合并
    3. sscanf
    格式:sscanf(src,格式化字符串,argument1…)
    功能:字符串分割
    ps:%[^=] 表示遇到等号停止

    3.重要知识点

    1. 冒泡排序
    冒泡排序算法的运作如下:(从后往前)
    1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
    3.针对所有的元素重复以上的步骤,除了最后一个。
    4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
    在这里插入图片描述
    eg:

    # include <stdio.h>
    int main(void)
    {
        int a[] = {900, 2, 3, -58, 34, 76, 32, 43, 56, -70, 35, -234, 532, 543, 2500};
        int n;  //存放数组a中元素的个数
        int i;  //比较的轮数
        int j;  //每轮比较的次数
        int buf;  //交换数据时用于存放中间数据
        n = sizeof(a) / sizeof(a[0]);  /*a[0]是int型, 占4字节, 所以总的字节数除以4等于元素的个数*/
        for (i=0; i<n-1; ++i)  //比较n-1轮
        {
            for (j=0; j<n-1-i; ++j)  //每轮比较n-1-i次,
            {
                if (a[j] < a[j+1])
                {
                    buf = a[j];
                    a[j] = a[j+1];
                    a[j+1] = buf;
                }
            }
        }
        for (i=0; i<n; ++i)
        {
            printf("%d\x20", a[i]);
        }
        printf("\n");
        return 0;
    }
    

    2. 选择排序
    选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完
    第一趟排序,找出待数组中最小的一个元素和第一个元素进行交换
    第二趟排序,找出待数组中最小的一个元素和第一个元素进行交换
    在这里插入图片描述
    eg:

    void swap(int *a,int *b) //交换两个元素
    {
        int temp = *a;
        *a = *b;
        *b = temp;
    }
    void selection_sort(int arr[], int len)
    {
        int i,j;
    
            for (i = 0 ; i < len - 1 ; i++)
        {
                    int min = i;
                    for (j = i + 1; j < len; j++)    
                            if (arr[j] < arr[min])    
                                    min = j;    //找到最小值
                    swap(&arr[min], &arr[i]);    //做交換
            }
    }
    

    3. 插入排序
    插入排序原理很简单,将一组数据分成两组,分别将其称为有序组与待插入组。每次从待插入组中取出一个元素,与有序组的元素进行比较,并找到合适的位置,将该元素插到有序组当中。就这样,每次插入一个元素,有序组增加,待插入组减少。直到待插入组元素个数为0。当然,插入过程中涉及到了元素的移动。
    在这里插入图片描述

    void InsertSort(int a[], int n)
    {
        for(int i= 1; i<n; i++){
            if(a[i] < a[i-1]){//若第 i 个元素大于 i-1 元素则直接插入;反之,需要找到适当的插入位置后在插入。
                int j= i-1;
                int x = a[i];
                while(j>-1 && x < a[j]){  //采用顺序查找方式找到插入的位置,在查找的同时,将数组中的元素进行后移操作,给插入元素腾出空间
                    a[j+1] = a[j];
                    j--;
                }
                a[j+1] = x;      //插入到正确位置
            }
        }
    }
    

    4. 二分查找
    适应情况:在一批有序数据中查找某数

    基本思想:选定这批数中居中间位置的一个数与所查数比较,看是否为所找之数,若不是,利用数据的有序性,可以决定所找的数是在选定数之前还是在之后,从而很快可以将查找范围缩小一半。以同样的方法在选定的区域中进行查找,每次都会将查找范围缩小一半,从而较快地找到目的数。
    eg:
    在这里插入图片描述
    在这里插入图片描述

    #include<stdio.h>
    #include<stdlib.h>
    int bin_search(int arr[], int left, int right, int key)
    {
        int mid = 0;
        while (left < right)
        {
            mid = (left + right) >> 1;
            //mid = (left + right)/2
            if (arr[mid]>key)
            {
                right = mid - 1;
            }
            else if (arr[mid] < key)
            {
                left = mid + 1;
            }
            else
                return mid;//若找到,返回下标
        }
        return -1;//未找到
    }
    int main()
    {
        int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        int left = 0;
        int right = sizeof(arr) / sizeof(arr[0]) - 1;
        int ret = bin_search(arr, left, right, 5);//用ret接收函数的返回值
        printf("ret=%d\n", ret);
        system("pause");
        return 0;
    }
    
    

    二、学习心得

    今天一天课上下来,能感觉到难度相比之前有提升,相信接下来只会越来越难。还有就是之前讲过的知识点现在使用有些还是不大能想起来。而且今天所讲的内容较之前专业课上学的有很大不同及提升,之前只是学了最基础的,只能算是对C语言有了解,今后不断学习不断将强才能逐渐掌握。

    (注:今日起不再把所有知识点整理上来,只挑选之前未掌握的以及易错易混淆的部分。)

    展开全文
  • 原标题:大学C语言考试易错知识总结现在不少大学都把C语言作为一门必学的编程语言。C语言考试呢,并不能决定你的实践能力怎么样,他考的很多,我们不知道,也可以在写代码时避免,我们举个最简单的例子,运算符...
  • c++数组易错点总结

    2016-11-28 09:03:57
    c++数组1、只有在定义数组是才能使用初始化,此后就不能使用了,也不能将一个数组赋给另一个数组int cards[4] = { 3 , 6 , 8 , 10}; //ok int hands[4] ; //ok hand[4] = {5 , 6 , 7 ,9}; //error,只能在定义时初始...
  • 一、什么叫数组数组:顾名思义就是很多数的组合。 特点是:1、这些数的类型都是相同的;2、在数组里面,这些数在内存里是连续储存的,是一组有序数据的集合;3、用一个数组名和下标来唯一地确定数组中的元素。二、...
  • c语言数组、数组相关的计算

    千次阅读 2016-11-18 08:30:41
    数组 1.数组的创建: 元素类型 数组名 [常量或者常量表达式] 如:int arr1[10]; 注:即使是被const修饰的变量也不能作为[]中的内容,它本质上依然属于变量,只是具有常量属性 2.数组的初始化:  创建数组时...
  • C语言数组的坑

    2018-09-25 13:47:16
    数组 1. 一维数组的定义及引用 定义 类型说明符 数组名[常量表达式]; 复制代码注意事项 常量表达式的值必须是正整数 数组的起始元素下标为0 一维数组在内存中是如何存放的 存储方式同样从低地址到高地址,并且...
  • c语言数组相关的计算

    2018-08-20 15:58:00
    数组的初始化: 创建数组时,若不指定数组大小一定要初始化,但是初始化后可以不指定数组大小注:(1)字符串放在数组里时,默认最后还有\0,字符数组则不是,有啥放啥 (2)char *p="abcdef",...
  • 位运算 运用 按位与常用于... lazy_LYF 发布了10 篇原创文章 · 获赞 0 · 访问量 418 私信 关注 标签:fp,文件,易错,运算,int,C语言,位域,指针,字节 来源: https://blog.csdn.net/lazy_LYF/article/details/104570583
  • 数组 一维数组 不能在方括号中用变量来表示元素的个数,但是可以使符号常数或常量表达式。例如: #define FD 5 int a[3+2],b[7+FD];//是合法的 二维数组 如果对全部元素赋初值,第一维的长度可以不给出。 int a[3]...
  • c语言数组与for循环的综合运用

    千次阅读 2018-11-21 22:13:54
    //易错点容易漏掉,因为向后一位了,所以n要加一; } for(j=0;j;j++) a[j+i]=b[j];//把字符插入 printf("%s",strcat(a,b));//把两个字符合并输出 } 体会:通过这题我体会到了数组和for循环的综合运用,更加熟练...
  • c语言知识易错点有哪些大家都知道c语言不简单,但是c语言是学好计算机的基础,下面小编为大家带来了c语言知识的易错点,欢迎大家阅读!c语言知识易错点有哪些1.书写标识符时,忽略了大小写字母的区别。2.忽略了变量的...
  • C语言易错点

    千次阅读 2018-04-02 21:47:28
    重新将C语言的知识看了一遍,把自己遗忘以及容易出错的知识记录下来。各个知识之间没有什么联系。   定义变量时,我们使用了诸如"a" "abc" "mn12"这样的名字,它们都是...
  • C语言编程易错点总结

    2020-10-17 11:29:38
    C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。它是目前最著名,最流行的语言,效率高、功能强、用法灵活。 在学习编程语言的过程中,最怕最难的就是找BUG,而找BUG又是必不可少的能力,...
  • 全局变量 在所有函数外部定义的变量 范围:从定义位置开始到程序结束 局部变量 在一个函数内部定义的变量或者函数的形参,都是局部变量 局部变量和全局变量命名冲突问题 在一个函数内部,定义的局部变量名和...
  • 易错点分析:这里如果使用gets函数的话最后的两个测试点会报错,所以我使用了getchar去一个字符一个字符的接,然后再用一个数组记录该ASCII码值有没有出现,出现则置1.  #include int main() { char temp...
  • 数组是一种复合类型。 1、Char a[ ];定义一个a数组 2、Char *a;定义一个指针 3、a[ 20]虽然是20个元素的要求,但是内部不一定是20个,可能是比20个少。 4、a[ d] d是维度,维度必须是一个常量表达式。 注:存储...
  • 大学C语言考试易错知识总结

    千次阅读 多人点赞 2019-12-28 23:02:17
    文章目录运算符相关自增(减)前后缀逻辑运算符的短路问题赋值运算符的返回值问题运算符优先级的问题函数相关函数声明问题mian函数参数问题变量相关用字符串初始化字符数组赋初值问题转义字符问题常用ASCII码记忆...
  • C语言中用一个变量来存放指针,这种变量称为指针变量。指针变量的值就是某内存单元的地址或指针。 变量的指针就是变量的地址,存放变量地址的变量就是指针变量。eg:i_pointer代表指针变量,而*i_pointer是i_pointer...
  • sizeof()在计算数组的长度的时候,计算数组中有的字符的个数,但是不会计算字符串最后的‘\0’ 1 Char str[]="hello" 2 Sizeof(str) = 6 //列出C中会用到的关键字的长度 Sizeof(char) = 1 Sizeof(short) = 2 Sizeof...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,661
精华内容 664
关键字:

c语言数组易错点

c语言 订阅