计算机二级——C语言程序设计 知识点整理

文章目录

错题集合

第六套 编程题

第七套 填空题

第八套 填空题(数组传参) 编程题(素数)

知识点

  • 结构体定义

    typedef struct S{
    	int g;
    }T;//T可用于定义结构体变量
    
  • 注意static 定义的变量,只在第一次生效

    static int i = 0;
    
  • 比较两个字符串是否相等,相等>0,不相等<0

    strcmp(s1,s2);
    
    strcat()连接
    strcpy()复制
    strcmp()比较是否相等
  • scanf与printf区别

    scanf("%d\n",&p);//scanf函数,输入的是地址,如果是指针,则scanf("%d\n",p);
    
    printf("%d\n",p);//输出变量名
    
  • 数据库设计:

    概念模式全体用户公共数据视图
    外模式用户模式
    内模式物理模式
  • switch();//要注意 是否case中有break;
    
  • continue作用:跳出这次循环剩余语句,进行下一次循环

  • ++pt->x;
    

    ->的运算优先级,高于++,所以相当于++(pt->x)

  • 最高优先级运算符:

    []数组名[]
    ()(表达式)
    .对象.成员名
    ->对象指针->成员名
  • 改变形参影响实参

  1. return

    #include<stdio.h>
    int fun(int m)
    {
    	m=5;
    	return m;
    }
    int main()
    {
    	int n=10;
    	n=fun(n);
    	printf("%d",n);//输出5
    	return 0;
    }
    

    return的缺点是每次只能返回一个参数;如果想返回多个,可能需要将数据存入数组,然后将数组首地址返回给主调函数,较为麻烦。

  2. 全局变量

    #include<stdio.h>
    int n=10;
    void fun1()
    {
    	n=5;
    }
    void fun2()
    {
    	int n=7;
    	printf("%d",n);//输出7
    }
    int main()
    {
    	printf("%d",n);//输出10
    	fun1();
    	printf("%d",n);//输出5
    	fun2();
    	printf("%d",n);//输出5
    	return 0;
    }
    

    虽然说全局变量没有了个数的限制,而且遇到函数中同名局部变量时,全局变量还不起作用(县官不如现管)。

    但是毕竟大型工程并不是由一人编写的,一个地方全局变量的改动将会影响整个工程,所以尽量还是少用。

  3. 指针

    指针是直接指向内存单元的:

    #include<iostream>
    using namespace std;
    int main()
    {
    	int m,n=10;
    	m=n;
    	cout<<&m<<" "<<&n;//输出0018FF44 0018FF40
    	int *p,*q;
    	p=q=&n;
    	cout<<q<<" "<<p;//输出0018FF40 0018FF40
    	return 0;
    }
    

    变量m与变量n的地址不同,因此一方改变后互不影响;p,q均指向变量n,在内存在指向同一单元,一方改变互有影响。

    变量m与变量n的地址不同,因此一方改变后互不影响;p,q均指向变量n,在内存在指向同一单元,一方改变互有影响。

    #include<stdio.h>
    void fun(int *p)
    {
    	*p=5;
    }
    int main()
    {
    	int n=10;
    	fun(&n);
    	printf("%d",n);//输出5
    	return 0;
    }
    
  4. 引用

    #include<stdio.h>
    void fun(int& m)
    {
    	m=5;
    }
    int main()
    {
    	int n=10;
    	fun(n);
    	printf("%d",n);//<span style="font-family: Arial, Helvetica, sans-serif;">输出5</span>
    	return 0;
    }
    

    引用是C++中的概念,其相当于为变量起了个别名。其在初始化时 必须赋值,且赋值后在程序中 不可更改,这两点和指针有明显的区别。

    综上,推荐使用指针引用将被调函数的数据返回给主调函数。

  • 数组形参传入,实参改变 测试

    #include "stdio.h"
    
    #define  N	10
    
    void TestArr(int *array[]) 
    {
    	array[0] = 100;
    }
    
    void main()
    {
    	int Arr[N] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    	TestArr(&Arr[0]);
    	printf("%d\n",Arr[0]);
    }
    

    测试表明:

    传入:TestArr(&Arr[0]); TestArr(&Arr); TestArr(Arr);都可以改变实参

    传出:TestArr(int *array[N]) TestArr(int *array[]) TestArr(int array[])

    TestArr(int array[N]) 都可以改变实参

  • 数据库语言

    数据库语言具体功能例子
    数据定义语言创建数据库表、创建一个触发器
    数据控制语言授予用户访问权限
    数据操作语言增删改查
  • continue剩余语句不执行,结束当此循环,break跳出当前循环

    void main() 
    {
    	int i = 0;
    	for(; i < 3; i++)
    	{ 
    		if (i == 2)
    			continue;
    		printf("%d\n",i);
    	}
    	printf("finally:%d\n", i);
    }
    

    执行结果为:0,1,finally :3,即continue本次循环结束时,i++仍然执行。

  • int (a)[N]为数组指针,可以传入二维数组;(*a)N中, N为列数。

    否则,传入为a[][][] [N],*a[] [N]等也可;行数可为N,可为空;二维数组列数必须填入,一维数组列数默认为1。

    fun(int (*a)[N], int *b){};
    int x[2][N],y[N];
    fun(x,y);
    
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值