以打印Hello World为例,介绍以下知识点
1、无论看什么程序,首先要去找到main函数;
main函数是程序执行的入口
2、#include<stdio.h>和#include"stdio.h"的区别
#include<stdio.h>告诉编译器到系统的目录下面去查找头文件;
#include"stdio.h"告诉编译器先到当前目录下去查找头文件,如果没有找到,则到系统的目录下面去查找,如果在系统的目录下面没有找到,则报警。
3、return关键字
4、语句的后面别忘了分号;
5、{}中间的内容是函数的代码块;
用变量a给出下面的定义:
1 一个整型数
int a;
2 一个指向整型数的指针
int *a;
3 一个指向指针的指针,它指向的指针是指向一个整型数
int **a;
4 一个有10个整型数的数组
int a[10];
5 一个有10个指针的数组,该指针是指向一个整型数的
int *a[10];
6 一个指向有10个整型数的指针
int (*a)[10];
7 一个指向函数的指针,该函数有整型参数并返回一个整型值
int (*a)(int);
8 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参量并返回一个整型数
int (*a[10])(int);
左右法则:
首先找到标识符(a)开始阅读,先往右看,每当遇到小括号的时候,调转方向,再往左看!一旦解析完圆括号里面所有的东西,就跳出圆括号,重复上面的动作,直到整个定义解析完毕。
变量的作用域:
局部变量和全局变量:
局部变量的作用范围:就是它的代码块,也就是靠近它最近的{}的范围之内。
全局变量的作用范围:整个的.c文件
int a = 0;
解释:编译器看到int a = 0;的时候,就会在内存空间里面分配一块空间,这块空间的名字就叫a,然后这个空间有多大呢?就是一个 int 字节大小用来保存整型数据。a = 0 就表明这块内存内存空间分配好了之后,就把0这数值存储到这块区域里面!
char a的数据范围:1111 1111
最大肯定是 正的 ==》最高位,也就是bit7位肯定是0; ==》0111 1111 = 127
最小肯定是负的 ===》最高位,也就是bit7位肯定是1;==》1111 1111 = -127
为什么有-128?
0000 0000 = +0
1000 0000 = -0
直接把-0变为-128
short b; ==》数值范围 -32768 ~ 32767
数据在计算机中保存都是以补码的形式保存的。
unsigned char a = -1;
printf("a = %d\n", a);的值是255的原因。
1 首先-1的补码:取绝对值为1 ==》0000 0001==》1111 1110 ==》 1111 1111
==》-1的补码1111 1111保存到计算机中
2 给a定的数据类型是unsigned类型,所以最高位不是符号位(不表示正数或负数),是可以参与最后数值范围计算的。
此时,a 空间存放的是1111 1111,然后打印出来的时候,因为 a 这块空间存储值的类型是unsigned char 所以会默认你是正数,按照正数的补码规则转化为原码。
sizeof 的用法注意点:
sizeof 变量; //对
sizeof (变量名); //对
sizeof 数据类型; //错
sizeof(数据类型);//对