计算机二级C语言备考,知识点查缺补漏

本文详细介绍了C语言中数组与指针之间的关系,包括sizeof运算符在数组和指针上的应用,以及register和auto关键字的作用。同时,探讨了不同类型的指针操作,如字符指针和数组的赋值区别,以及C语言中的类型转换和内存分配。此外,还涉及了数据库中的键概念和关系运算,以及C语言中的数据类型和运算规则。
摘要由CSDN通过智能技术生成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

C
在这里插入图片描述
A在这里插入图片描述

#include<stdio.h>

int main()
{
	//一维数组
	int a[] = { 1, 2, 3, 4 };
	printf("%d\n", sizeof(a));//16  
	//1.数组名单独放在sizeof内部,数组名表示整个数组,所以sizeof(数组名)计算的是是数组总大小,单位是字节
	//2.&数组名,数组名表示整个数组,所以&数组名取出的是整个数组的地址
	//3.除此之外,所有的数组名都表示首元素的地址
	printf("%d\n", sizeof(a + 0));//4    a代表首元素地址,a+i代表第i个元素的地址,在32位平台下所有的地址的大小都是4个字节
	printf("%d\n", sizeof(*a));//4       a是首元素地址,*a是首元素--1,int型占4个字节大小
	printf("%d\n", sizeof(a + 1));//4    a是首元素地址,a+1是第二个元素的地址,它还是一个地址
	printf("%d\n", sizeof(a[1]));//4     a[1]--第二个元素
	printf("%d\n", sizeof(&a));//4       &a虽然取出的是整个数组的地址,但它还是一个地址
	printf("%d\n", sizeof(*&a));//16     &a取出的是整个数组的地址,对它进行解引用,就是这个数组,这个数字的大小就是16
	printf("%d\n", sizeof(&a + 1));//4   &a取出的是整个数组的地址,加1跳过了整个数组(16个字节),但它还是一个地址
	printf("%d\n", sizeof(&a[0]));//4    &a[0]取的是第一个元素的地址
	printf("%d\n", sizeof(&a[0] + 1));//4   &a[0] + 1取的是第二个元素的地址

	return 0;
}

B

在这里插入图片描述
系统指针长度为8
在这里插入图片描述
chp指向了b[0]
在这里插入图片描述

register关键字
1)register变量必须是能被CPU所接受的类型。

这通常意味着register变量必须是一个单个的值,并且长度应该小于或者等于整型的长度。不过,有些机器的寄存器也能存放浮点数。

(2)因为register变量可能不存放在内存中,所以不能用“&”来获取register变量的地址。

(3)只有局部自动变量和形式参数可以作为寄存器变量,其它(如全局变量)不行。

在调用一个函数时占用一些寄存器以存放寄存器变量的值,函数调用结束后释放寄存器。此后,在调用另外一个函数时又可以利用这些寄存器来存放该函数的寄存器变量。

(4)局部静态变量不能定义为寄存器变量。不能写成:register static int a, b, c;

(5)由于寄存器的数量有限(不同的cpu寄存器数目不一),不能定义任意多个寄存器变量,而且某些寄存器只能接受特定类型的数据(如指针和浮点数),因此真正起作用的register修饰符的数目和类型都依赖于运行程序的机器,而任何多余的register修饰符都将被编译程序所忽略。

原文链接

auto关键字
auto用于在函数中修饰变量为自动变量,且可省略。
所有局部变量默认都是auto,一般省略不写。

在这里插入图片描述

声明字符指针并赋值字符串:char *s1 = "abc"其实实际物理存储模式和字符数组是一样的,一个地址存一个字符,但是有两个和字符数组完全不同的地方。
1、赋值后不可修改数据
2、移动指针输出字符时,是从当前指针位置开始输出,到‘\0’停止

vc++2010 变量必须放在函数开头,(不支持C99的部分特性)
主键、外键、超键、候选键的区别

计算机二级中的9种运算问题:笛卡尔积,自然连接,交,并,选择,投影

int)(-4.65)//-4
sizeof("ascdef")//7
strlen("ascdef")//6

整形常量为2个字节
实型常量为4个字节

&& 若左边为0则不会执行右边

转义字符 \ i (i不能大于127)

未赋初值的指针变量自动赋任意地址值

typedef int T[10]
T a[20];//int a[20][10]

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值