C语言重温--基础篇

一、基础内容

转换关系
8bit=1byte(字节)
1024byte=1kb
1024kb=1mb
1024mb=1gb
1024gb=1tb

1.名称定义:
  • 有意义的变量名
  • 字符有小写字母,大写字母,数字 下划线
2.数据类型
TypeSize
char, unsigned char, signed char1byte
short, unsigned short2bytes
int, unsigned int
long, unsigned long
float
4bytes
double long double8bytes

具体数值及输入输出指令
具体用法

  • char:字符型 8【赋值方式:char grade = ‘A’; 】
  • int :整形 32
  • float:浮点数 32
  • double:双精度 64
  • PS:输入 出符的用处
    eg:
#include<stdio.h>
int main()
{
 char num;
 num=150;
 printf("out-d is %d,out-c is %c.\n",num,num);
 return 0;
}

输出结果由结果可知,输出形式对数值的表达是有区别的,double输出–溢出后算负数(由输入类型决定了),c输出-显示asll码。【输入输出符号只影响表达,不影响其本身的数值】

  • 常用输入输出符号及含义
符号含义
%d十进制双精度
%o (字母 o)八进制
%x十六进制
%f浮点输出
%cASCLL码输出
%uunsigned int类型的值
%s字符串
备注显示 0 或0x前缀,必项在说明符中加入#符号。
3.常用函数
  1. scanf("%d",&变量); scanf("%d",数组);printf("%d",变量)
  • scanf的注记
scanf返回值(数字返回1,其他返回0-利用这个性质可以做while循环的标志
status = scanf("%ld",&num); 
   while (status == 1) 
   { 
        /* loop actions */ 
        status = scanf("%ld",&num); 
   }
  1. sizeof(变量):
    求某类型或某变量类型的字节数(debug用)
  2. strlen():(返回字符串长度)

4.Debug基本方法

  1. 在程序的几个关键点处加入 printf()监视变量的值。
  2. 打断点
  3. 使用调试器逐步调试
5.编程小贴士
  1. 常量处理:
  • 预处理器#define TAXRATE 0.015最好培养大写习惯#define BEEP '\a' 定义符号
    #define OOPS "Now you have done it !" 定义字符串
  • const 修饰符
    const int MONTHS = 12; // MONTHS 是一个今表 12的符号常量只能读
  • 枚举(enum)枚举说明

二、重点学习内容

  • 说明:本次复习参考书目未 c primer plus
  • 由于全文扫荡效率低下,故将目录的黄色标识部分优先回顾,红色部分涉及文件操作,用于嵌入式开发,先放放。
  • 下文将按照重点内容展开笔记
    contents
1.字符串的输入输出
2.运算符 表达式 语句
[1] while()循环
[2] 运算符 (=,+,-,*,/,% )
  1. 关系运算符(< ,>,==,!=)癿优先级要低亍包括 + - 在内的算术运算符,但是要高于赋值运算符。
[3] typedef(给类型起一个别名)·
typedef double real; 
使 real 为成 double 癿删名。现在你可仌声明一个 real 类垄癿发量
3.循环
  1. while()–循环
  • 妙用
结合空语句做判断
 while (scanf("%d",&num)== 1//分号做空语句 
   ;  /* 跳过整数输入 */  
计数器原则:初始化 比较 增
int NUMBER=20;
while(counf++ <== NUMBER )  语句 ;

2.for–循环(集三要素于一体)

4.数组
初始化方式
1.const char buf[]={'o','k','b','b',1};
2.const char num[]="ws is handsome";//仅限字符串
打印方式
for(i=0;i<sizeof(num)/sizeof(num[0]);i++)
 printf("%c",num[i]);

5.指针
  • 理解:指针就像磁盘的磁针,直接指向地址
  1. 用法:
//定义 -- 联系数组
int data[2] = {100,200}; 
int moredata[2] = {500,400}; //连续存放,上一个数组移位移溢出后就会取下个数组的值
int *p1;
p1 = data; 
//调用
int num,adr;
num = *p1;//取数据--输出:100
adr = p1; //取地址--输出:4206608(不同PC不同)
//复合操作--* ++同级操作符 作用顺寻从右到左
printf("p1的地址是 %d,P1的值是 %d \n",p1,*p1); 
printf("地址自加 p1输出值  = %d,  地址自加 p1输出值= %d,  p1取值后输出 再+1 = %d , p1取值后+1 在输出= %d \n", 
                   *p1++ ,     *++p1,     (*p1)++ ,++(*p1));
printf("p1的地址是 %d,P1的值是 %d",p1,*p1); 
//输出结果
p1的地址是 4206608,P1的值是 100
地址自加 p1输出值  = 200,  地址自加 p1输出值= 200,  p1取值后输出 再+1 = 101 , p1取值后+1 在输出= 101
p1的地址是 4206616,P1的值是 500
//分析:
1.同行操作不影响
2.但是上一行的所有操作会全部影响到下一行,比如指针位移了两次+8字节
3.建议带括号操作,这样不容易出错,也易懂
  1. 其他操作
  • 指针自加 自减
  • 指针加 减一个整数位移
  • 指针减指针
  • 取指针的地址(&)
//定义
int urn[5] = {100,200,300,400,500}; 
int *ptr1, *ptr2, *ptr3,*adr,num;
ptr1 = urn;	//把地址赋值给指针
ptr2 = &urn[2]; //数组第一个数值才是地址,其他的需要取出地址
		//ptr+4 的结果等同 &urn[2]。
1.
ptr1++; //一次加4个字节 一个int位  
ptr1--;//相当于不变
2.
ptr3 = ptr1 + 4; //移动16字节 地址+16 adr
adr = ptr3-2;
3.
num = ptr3-ptr1;//num=4
4.
printf (" &ptr1 = %p \n",&ptr1);//输出地址的地
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值