指针及结构体、关键字typedef/extern

指针
在这里插入图片描述

1、指针是地址,指针变量即是地址变量。
2、通过指针改变变量a的值
int main()
{

int a=10;
 int *p=null;
 p=&a;
 *p=100;
 return 0; }

3、

在C语言中 * 有3个含义:a * b =c //乘
int *p //声明 p是一个整型类型的指针(理解时从右向左)
* p //指向
4、指针有两个值:自身的值和指向的值
5、*ip 指向b, 就是对b的操作。
6、指针的大小 (double 类型) 和编译器所选的环境有关
win32->32bit->4
x64 ->64bit->8
7、定义指针变量时,类型对指针变量起2个作用。A 解析存储单元的大小,B、指针变量+1的能力。
8、指针值传递。
9、空指针 :int *ip = NULL;
野指针:int *ip ;
10、指针类型不同+1 的能力也不一样。int 类型指针加1即是地址+4;char 类型指针+1指针地址+1;
即:typename *ip;
ip = ip+1;//ip =ip+ sizeof(typename)*1
11、指针和整型加减结果仍是指针类型。
结构体
7.结构体:一种数据类型

 Struct  Student
  {
  char   s_id[10];
  char   s_name[20];
  int s_age;
  };
  int main()
  {
    //定义变量
  int a=10;
  Struct Student x={"20201","li",19}//输出打印
  printf("%d",a);
  printf("id: %s\n",x.id);
  }
  **输入与输出**
 

8、printf 就是向这个文件件输出数据 stdout(标准输出)->显示器;
scanf 就是从这个文件读取数据 stdin(标准输入)->键盘
stderr(标准错误文件):无缓冲,会直接输出;printf 会先在行缓冲,在输出。
typedef
9、typedef : 把一切合法的变量名的定义或声明通过typedef 转换成一个类型名。
在这里插入图片描述

10、typedef int *PIN
PIN a,b; === int *a,*b;
11、typedef 与#define PIN int *的区别
12、typedef 定义简单的别名

typedef Struct Student { char s_id[10]; char s_name[20]; int s_age; }Stuyn; 等价

 Struct  Student
  {
  char   s_id[10];
  char   s_name[20];
  int s_age;
  };
  typedef  Struct Student Stuyn;

Static
13、当函数内的变量加上static 关键字后,他从栈区移到了数据区(.data),它的生存周期不受函数的影响。

 int fun ()
  {
  int a=0;//a,b 变量在栈区,当函数结束会被释放
  int b=0;
  ++a;
  ++b;
  printf("%d%d",a,b);
  }
  int main()
  {
  int i=1;
  while(i<5)
  {
  fun();
  i++;
  return 0;
  }

当加上 static int a =0 时,a被放在了数据区,它的生存周期不受fun函数的影响。
静态关键字修饰局部变量 :可见性不变,生存期改变到在.data区;修饰全局变量:可见性变为本文件,生存期不变在.data区
extern :全局变量和函数在另一个文件中使用给出的声明。
const
const 定义的变量是常变量。是可读不可写。只具有右值性质不具有左值性质。
const可以修饰变量,也可以修饰数组。不论是变量还是数组,加上const 的变量一定要初始化。只可读不能被修改。
声明与定义
声明不分配内存空间,定义分配了内存空间
运算符的优先级
赋值运算符<关系运算符<算术运算符
“==”赋值运算符:将常量写在左边,变量写在右边,例如:
if(2 == b) //常量可读不可写
逻辑表达式 , 关系表达式
运算结果是 bool 值
“&&”与运算(简洁与):当第一个表达式为假时,不需要判断后面,直接得出为假;
“||”或运算(简洁或):当第一个表达式为真时,不需要判断后面,直接得出为真;
在所有的单目运算符中,只有“++,–”具有赋值能力。

int main()
{
int a = 10;
bool tag = false;
tag = !!a;
printf("%d %d",a,tag);
return 0;
}//a=10;tag=1;

分支语句
1、if 语句
2、多分支语句
3、空语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值