c语言移位运算符怎么用(c语言移位操作技巧)

开始步入正轨,有点那味了选择语句if语句#define_CRT_SECURE_NO_WARNINGS1#include#includeintmain(){intinput=0;printf

开始步入正轨,有点那味了

选择语句

if语句

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
int input = 0;
printf(\"你要好好敲代码吗?(1/0)n\");
scanf(\"%d\", &input);
if (input == 1)
printf(\"一份好工作n\");
else
printf(\"回家卖红薯n\");

return 0;
}

循环语句

while语句

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
int line = 0;
printf(\"入坑,开始学习n\");
while (line < 20000)
{
printf(\"敲一行代码:%dn\",line);
line++;
}
if (line >= 20000)
printf(\"ding~找到一个好工作d=====( ̄▽ ̄*)bn\");

return 0;
}

函数

定义一个求和函数

int Add(int x, int y)
{
int z = x + y;
return z;
}
int main()
{
int a = 100;
int b = 200;
int sum = 0;
sum = Add(a, b);
printf(\"sum=%dn\", sum);

return 0;
}

数组

一组相同类型元素的集合

  • 定义数组:int arr[10]={0};//定义了一个存放10个整数数字的数组
  • char ch[20};//字符型数组
  • float arr2[5];//浮点型数组

数组是通过下标访问元素,例如:int arr[10]={1,2,3,4,5,6,7,8,9,10};通过语句printf(“%dn”,arr[4]);可以打印数字5;即arr[下标]

操作符

此次介绍了移位操作符
左移操作符<<,向左移动二进制位;
移位之后变量本身是不变的,变的是操作后产生的一个值,例如代码

int main()
{
int a=1;//二进制状态下后四位是0001
int b=a<<2;
printf(\"%dn\",b);//b的值为4,二进制状态下最后四位的状态是0100
printf(\"%dn\",a);//变量a还是1
return 0;
}

单目操作符、双目操作符、三目操作符

所谓几目就是指的有几个操作数
单目操作符有:!a,-a,,a++;双目操作符有:a+b;三目操作符有:exp1?exp2:exp3,这个表达式的意思可以解释为exp1若成立,则整个表达式的值为exp2,若exp1不成立则整个表达式的值为exp3

关键字

typedef

为类型重命名,即给一个类型起名字
typedef unsigned int uint_32;//将unsigned int重命名为unint_32,所以unint_32也是一个类型名

static

1.修饰局部变量–静态局部变量:使局部变量的生命周期变长
2.修饰全局变量–静全局部变量:使全局变量只能在自己所在的源文件内使用
3.修饰函数–静态函数:把函数本来的外部链接属性变成内部链接属性
总结:让作用范围小的变大,大的变小

指针

指针变量:一种用来存放地址的指针变量,类型为int*(这里的*只是个形式,说明变量是指针变量)
解引用:根据指针变量存放的地址找到该地址的变量;*变量名,(这里的*是操作符)

int main()
{
int a=10;//定义一个变量,申请4个字节内存
int* p=&a;//取地址,把地址放到p的申请的内存里,这里的*说明p就是指针变量
*p=20;//* --解引用操作符,根据p中的地址找到a,并对a进行操作
printf(\"a=%dn\",a);
return 0;//打印结果为20
}

执行流程可以理解为:房东找了一个房间出租,房间起了个名叫做a雅居,住进来个人叫10君,房东看了看a雅居的门牌号(这个过程就是&a),假设地址为0x0012ff40记在本子p上,本子的规格为int*;某一天房东看10君不顺眼,想让20君住进去,房东根据本子p上的地址(即0x0012ff40)找到了10君(这个过程就是*p),把他赶了出去,让20君住进去;现在去a雅居找到的人就是20君

流程图:

c语言移位运算符怎么用(c语言移位操作技巧)

​​int a=10;解释:申请一块内存命名为a,这块内存放的值为10,这块内存的地址为0x0012ff40
int*p=&a;解释:申请一块内存命名p,把a的地址放到这块内存中;这块内存p也有地址,但此时不考虑(&a就是获取a的地址)
*p=20;解释:*p(即解引用)根据p内存储的地址找到a,此时*p就相当于a,对*p的操作相当于对a进行操作;所以把20赋给*p就是把20赋给a

指针变量的大小

指针存储的是地址,32位的机器地址是32位,也就是4个字节,所以32位的机器指针大小为4个字节;同理在64位的机器上地址是64位,占8个字节,所以所以64位的机器指针大小为8个字节
指针变量的大小只与平台位数有关,和变量类型无关

int main() //32位平台
{
printf(\"%dn\",sizeof(char*));//占4个字节
printf(\"%dn\",sizeof(short*));//占4个字节
printf(\"%dn\",sizeof(int*));//占4个字节
printf(\"%dn\",sizeof(double*));//占4个字节
return 0;
}

结构体

用来描述复杂对象,本质是一种自定义创造出来的类型
结构体类型内有成员,要用.操作符访问

struct Book //结构体的类型
{
char name[20];//书名
short price;//价格
};//这里的分号不可缺少!!!!!!

int main()
{
//利用结构体类型--创建一个该类型的结构体变量
struct Book b1 = { \"C语言程序设计\", 55 };
printf(\"书名:%sn\", b1.name);//此处的.为属性操作符,用于访问结构体成员
printf(\"价格:%d元n\", b1.price);
b1.price = 15;//访问到价格成员,更改数值
printf(\"修改后的价格:%d元n\", b1.price);
return 0;
}

利用指针pb打印出书名和价格(使用.操作符打印)

struct Book
{
char name[20];
short price;
};

int main()
{
struct Book b1 = { \"C语言程序设计\", 55 };
struct Book* pb = &b1;//定义指针变量pb *表明是指针变量
//利用指针pb打印出书名和价格
printf(\"%sn\", (*pb).name);//解引用
printf(\"%dn\", (*pb).price);//
return 0;
}

还可以使用->操作符打印,更加便捷

struct Book
{
char name[20];
short price;
};

int main()
{
struct Book b1 = { \"C语言程序设计\", 55 };
struct Book* pb = &b1;//定义结构体指针变量pb *表明是指针变量
printf(\"%sn\", pb->name);
printf(\"%dn\", pb->price);
return 0;
}


.操作符和->操作符的比较:
->操作符的使用结构是:结构体指针->成员 只要定义了结构体指针变量就可以使用,直接从结构体指针变量指向成员;但.操作符的使用结构是:结构体变量.成员 需要结合解引用,繁琐


对于结构体变量的更改

前文使用b1.prince=15;语句可以更改价格,因为prince是变量,所以可以直接更改数值;但是结构体中的书名name是数组名,本质上是地址,不可以直接更改,所以使用b1.name=”C++程序设计”;语句会报错不可以更改。

想要更改如下所示:

struct Book//结构体的类型
{
char name[20];//书名
short price;//价格
};
int main()
{
struct Book b1 = { \"C语言程序设计\", 55 };
strcpy(b1.name,\"C++程序设计\");//全称strcpy-string copy,是一个字符串拷贝函数
printf(\"%sn\",bi.name);
return 0;
}

strcpy()函数全称是:strcpy-string copy,是一个字符串拷贝函数
此函数有两个参数,strcpy(目的地,”需拷贝的字符”)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/21148.html

(0)
nan
上一篇 2021-09-04
下一篇 2021-09-04

相关推荐

  • 风险的五大管控措施(风险管理措施有哪些)

    王辰天有不测风云,人有旦夕祸福。理想的人生是一路平安,现实却是坎坷崎岖。所以说理想是丰满的,现实是骨感的。因为风险的存在,就迫使人类发明了各种风险管理的方法。所谓的风险管理,就是我们要预知某种极端情况的发生可能带来的损失,评估一下是否

    2021-12-12
    0
  • win7管理员账号已被停用如何解决(win7帐户已被停用)

    Win7开机后提示您的账户已被停用怎么办?Win7系统电脑无法进入桌面提示账户被停用该如何解决?请看下文具体介绍。解决方法:1、首先重启电脑并在启动界面按F8进入安全模式界面;2、进入安全模式,打开电脑左下角【开始菜单】,找到【控制

    2021-12-11
    0
  • 还有什么游戏能玩(不用实名认证的仙侠手游)

    在很多人眼里,成年人玩游戏是一种幼稚的行为,只有他们自己知道,自己玩的游戏大多都是以前玩过的作品,这些游戏实在是太耐玩,如果游戏中有什么东西没完成自己心中总是会留有遗憾,所以他们才会在成年之后依旧去玩的。下面这10款游戏就经常被成年玩家玩,而且只要这

    2021-10-23 科技
    0
  • 微软官方U盘及正版系统下载教程(如何从u盘下载到电脑)

    本教程教你怎样用微软官方方式制作Windows10U盘安装介质准备工作:8GB空间的空白U盘或空白DVD1在微软官网下载制作工具2安装工具2.1选择USBDVD作为介质2.2根据自己需要选择系统,以及系统语

    2021-12-11 科技
    0
  • windows7旗舰版激活工具哪个好(免费windows7旗舰版激活码)

    之前分享过一款免费实用的Windows激活工具,但由于后期失效了无法使用。之后仍有不少朋友私信问我有没有什么好用的激活工具,今天小编继续给大家带来一款实用的电脑激活工具,支持Windows+Of

    2022-01-11 科技
    0
  • word首字下沉多个字怎么设置(word首字下沉怎么设置)

    今天跟大家分享一个计算机二级考试MSoffice高级应用科目考试的考点:首字下沉。首字下沉可以使段落的第一行第一字字体变大,同时段落的其它文字保持原样。目标效果图操作步骤光标定位在需设置首字下沉的段落中,在[插入]选项卡下面的[文

    2021-12-11 科技
    0

发表回复

登录后才能评论