C语言知识点总结(一)

这篇博客主要介绍了C语言的指针概念,包括指针变量、数组指针、指针数组、函数指针和回调函数。此外,还讲解了数据类型的存储方式,如原码、反码和补码的表示,以及大小端存储模式。最后,讨论了字符串处理函数如strlen、strcpy等,并介绍了结构体、内存对齐、枚举和联合等自定义类型。
摘要由CSDN通过智能技术生成

一、指针
1、指针是一个变量,用来存放一块内存空间的地址。

2、指针的大小是固定的4/8个字节(32位平台/64位平台)。

3、 C/C++会把常量字符串存储到单独的一个内存区域,当几个指针。 指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。

4、 数组指针:一个能够指向数组的指针。数组指针中存放的应该是数组的地址。

int (*p)[10]; 
//解释:p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为10个整型的数组。所以p是一个指针,指向一个 数组,叫数组指针。
//这里要注意:[]的优先级要高于*号的,所以必须加上()来保证p先和*结合。

5、指针数组:一个存储指针的数组

int *arr[10]; //数组的每个元素是int*

6、函数指针:指向一个函数的指针

void (*fun)();
//fun先和*结合,说明fun是指针,指针指向的是一个函数,指向的函数无参数,返回值 类型为void。

int (*parr1[10])();//函数指针数组

7、回调函数:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。

8、数组名的意义

  1. sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。
  2. &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。
  3. 除此之外所有的数组名都表示首元素的地址。

二、数据类型的存储
1、原码、反码、补码
计算机中的有符号数有三种表示方法,即原码、反码和补码。
三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位三种表示方法各不相同。
原码
直接将二进制按照正负数的形式翻译成二进制就可以。
反码
将原码的符号位不变,其他位依次按位取反就可以得到了。
补码
反码+1就得到补码。

2、在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理; 同 时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需 要额外的硬件电路。

3、大小端
大端(存储)模式:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中。

小端(存储)模式:是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。

//判断大小端
#include<stdio.h>

int check_sys(){
   
	int i = 1;
	return (*(char*)& i);
}

//int check_sys(){
   
//	union{
   
//		int i;
//		char c;
//	}un;
//	un.i = 1;
//	return un.c;
//}

int main(){
   
	int ret = check_sys();
	
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值