初识C语言——操作符详解

简介: 操作符详解

 一、 strlen与sizeof的区别

首先strlen是一个库函数,strlen是求字符串长度的,关注的字符串中是否有\0,统计\0之前出现的字符个数,而sizeof是一个操作符,sizeof只关注占据了多大的内存空间,不关注内存中存放的数据本身,且sizeof的返回值的单位是字节。

eg:

#include <stdio.h>
int main()
{
  char arr1[] = "abc";
  char arr2[] = { 'a','b','c' };
  printf("%d\n", strlen(arr1));
  printf("%d\n", strlen(arr2));
  printf("%d\n", sizeof(arr1));
  printf("%d\n", sizeof(arr2));
  return 0;
}

image.gif

image.gif编辑

由于arr2中没有\0,所以打印出来的为随机值。


二、static的前世今生

在C语言中: static是用来修饰变量和函数的

1. 修饰局部变量-称为静态局部变量

2. 修饰全局变量-称为静态全局变量

3. 修饰函数-称为静态函数


未用static修饰的局部变量:

image.gif编辑

用static修饰的局部变量:

image.gif编辑

原因:static修饰局部变量的时候,改变了局部变量的存储类型,普通的局部变量是存储在栈区,被static修饰的变量是存储在静态区的,存储在静态区的变量,出了作用域不会消毁,依然存在,所以静态变量的生命周期就是程序的生命周期。程序结束的时候,静态变量才回收空间。所以其生命周期变长了,而作用域不变。

image.gif编辑


未用static修饰的全局变量:

image.gif编辑

用static修饰的全局变量:

image.gif编辑

全局变量具有外部链接属性,static修饰全局变量的时候,这个全局变量的外部链接属性就变成了内部链接属性,这个全局变量只能在自己所在的.c文件中看到,其他源文件中看不到。


未用static修饰函数:

image.gif编辑

使用static修饰函数:

image.gif编辑


三、关键字 typedef

typedef 顾名思义是类型定义,这里应该理解为类型重命名。

//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名
typedef unsigned int uint_32;
int main()
{
    //观察num1和num2,这两个变量的类型是一样的
    unsigned int num1 = 0;
    uint_32 num2 = 0;
    return 0;
}

image.gif


附思维导图:image.gif编辑


相关文章
|
1月前
|
存储 C语言 索引
【C语言篇】操作符详解(下篇)
如果某个操作数的类型在上⾯这个列表中排名靠后,那么⾸先要转换为另外⼀个操作数的类型后执⾏运算。
|
1月前
|
程序员 编译器 C语言
【C语言篇】操作符详解(上篇)
这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的表达式。
|
1月前
|
C语言
C语言操作符(补充+面试)
C语言操作符(补充+面试)
34 6
|
1月前
|
存储 编译器 C语言
十一:《初学C语言》— 操作符详解(上)
【8月更文挑战第12天】本篇文章讲解了二进制与非二进制的转换;原码反码和补码;移位操作符及位操作符,并附上多个教学代码及代码练习示例
44 0
十一:《初学C语言》—  操作符详解(上)
|
2月前
|
C语言
五:《初学C语言》— 操作符
本篇文章主要讲解了关系操作符和逻辑操作符并附上了多个代码示例
34 1
五:《初学C语言》—  操作符
|
3月前
|
C语言
C语言逻辑操作符的短路问题
C语言逻辑操作符的短路问题
|
3月前
|
编译器 C语言
【C语言】:中移位操作符,位操作符详运算规则详解
【C语言】:中移位操作符,位操作符详运算规则详解
28 1
|
3月前
|
存储 编译器 C语言
|
3月前
|
存储 C语言 索引
【C语言基础】:操作符详解(二)
【C语言基础】:操作符详解(二)
|
3月前
|
编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
38 3