C语言知识点复习 一

int 4Byte
short 2Byte
double 8Byte
float 4Byte
long 4Byte
sizeof(变量名或者变量类型); 计算字节长度
每一个字符在计算机中都用一个ASCII码值表示(最多有256个字符)内存中存放的是ASCII码值,显示时再进行转化


%c 字符 %d整形  %ffloat  %lfdouble  %x十六进制
int a = 1;初始化 a = 1;赋值
const 要进行初始化 不能再进行赋值
a++表达式值为原先的a值
关系表达式只有两个值(1或0)
描述一块内存 1,地址 2,大小
在语法层面上变量存数据,变量有地址 在计算机底层上内存存数据,内存有地址。


指针:指针变量 地址:

break:跳出此循环 continue:跳出本次循环,继续执行下一次循环操作


变量,内存,指针之间的关系
数组,指针,函数
内存图
变量本质:存储数据
数组下标从0开始
数组不初始化则数组的每个元素为随机数
取地址是用%p(可能是piont的意思) 输出8位16进制数(要看电脑的总线数)
数组的本质:内存 申请内存:内存本来就是有的,只不过是得到内存读写权限
申请内存是同时要进行初始化
数组在定义是可以不声明长度 但必须得赋初始值  int c[] =;则是错误的。
数组只有在定义的时候才能用大括号的方法,其他情况必须一个一个来访问。
当定义的数组长度小于可赋值的长度时编译可以通过,但是有潜在危险,这理论上是错误的,这就是数组越界
char a; a = 1;内存存的是数字1 a = '1';内存存的是ASIC码的1的值;
'\0'的ASIC码值为0
char a[]={'0','1'};不是字符串;
char a[3]={'0','1'};是字符串;
字符串以'\0'结尾的
字符串打印就是遇到'\0'时跳出循环;
指针变量加减法:type *p; p+i = p+i*sizeof(type);
求数组的地址打印出来就是数组的首地址;
地址的指针以字节为最小单位,不能单独打印具体的位的值;同时是直接与硬件关联的,并没有在内存中存储
不同类型的指针地址可以为不同类型的变量赋值,因为指针地址是没有类型可言的,但是不同类型的指针地址有不同的长度,写地址是没有错误,但是读地址有错误,要根据声明时的类型翻译成相应的类型,所以最好声明相同的指针地址。


即:从首地址访问sizeof()个字节,在将这些字节的二进制数据流按照所声明的类型进行解析。一共有两个步骤


NULL(注意大写) 为 0 指针变量可以赋值null
segmentation fault :访问内存错误;(内存越界,数组越界)
低地址位存低数据位称为小端。
验证: int a = 0x12345678;
int *p1 = &a;
char *p2 = &a;
for(i=0; i<4; i++)
{
printf("%x\n".*(p2+i));
}
强制类型转换是临时的只在当前语句有效,作用是为了消除警告
int 与 整数还是有区别的。
数组名代表数组首地址(int *p =a),或代表数组总大小(sizeof(a))
*(p+i) = p[i]=*(p++)=*(a+i);  一开始并没有声明p为数组,所以这就是数组的本质,一块连续的内存
但是*(a++)编译是不能通过的


所有的指针变量大小都为4个字节(32位系统而言)  声明指针变量的类型影响的是访问的字节数


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值