C语言基础知识整理

一、

关于sizeof和strlen。Sizeof()用于计算某类型或者某变量在内存中所占空间。比如整数分为short型,int型,long整型,分别占2,2/4,4个字节,int型具体占用几个字节和编译系统有关。我们输入字符串时通常用char数组:

Char s[10];

Scanf(“%s”,s);

输入的字符串可能是中英文混杂的,英文就是一个个字母,一个字母就是一个char,占一个字节。而一个汉字占用两个字节,这两个字节是连续的,每个字节最高位是1.所以可以依据这个判断一个字符串里面有多少汉字。

L=strlen(s);  //这里用strlen,只是字符串长度(以字节为单位),不包括/0
For(num=i=0;i<l;i++)
{
If(s[i]<0)  //有符号类型情况下,最高位1代表负数
Num++;
Printf(“共%d个汉字”,num/2);    //这里要除以2,因为两个最高位为1的字节才是一个汉字
	//#include "stdafx.h"
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int main(void)
{char a[] = { 'h', 'e', 'l', 'l', 'o' ,'\0'};char b[] = "hello";//定义字符串char c[] = { 'h', 'e', 'l', 'l', 'o' };char *p = b;cout << a << endl;cout << b<<endl;//输出的是hellocout << c << endl;char *pchar = c;//以下语句实现用指针输出hello。for (size_t i = 0; i < 5; i++){cout << *pchar;pchar++;}cout << "\n" << endl;cout << *p;//指针指向首地址,所以输出为 hstring str = "hello world";string *p1 = &str; //注意必须加取地址运算符 &cout<< str << "," << *p1; //输出的是  hello world,hello worldgetchar();return 1;
}

Char数组可以存放字符串,而且数组名就是字符串的地址。Scanf和cout都是对地址进行操作,所以cout<<b结果就是字符串。

Char数组按字母存放时,要想输出字符串,要加字符串结束标识符\0,否则输出的是乱码。或者也可以利用指针一个个输出字母

String其实是一个类,而不是数据类型。String的指针指向string对象,而不是第一个字符。

二者之间是可以相互转换的。

l  说到类,其实类就是一个构造数据类型,即用已经定义好的数据类型重新构造的新的数据类型。除了类,还有数组类型,结构体类型,枚举类型,联合体类型。

C语言中的结构体类型和c++中的类类型基本相同,只不过默认的限定符不同,c语言默认public,c++默认private

l  C++的麻烦之处就在于调用变量的方式。可以使用变量名,可以使用指针,还可以使用引用。程序实际是由函数构成的,包括多个子函数和一个主函数。而函数中参数的传递一般是按照值传递的,按照值的意思是会创建一个变量的副本,这个副本的值和参数的值相等。这样副本的值在函数中改变的话并不会改变原来的变量的值。

l  引用类型,在定义的时候在变量前面加一个&:

Int a;

Int&b=a;&c=a;  //b,c是a的两个引用

引用变量是一个变量的别称,没有分配新的内存空间,这样改变变量的值,所有的引用变量的值都会改变。

l  说到函数与变量,还有一个概念那就是全局变量和局部变量,判断的标准就是变量的定义放在函数外面还是函数内部。但全局变量和局部变量的区别没有这么简单,全局变量分配的空间位于内存空间中的“堆”,堆的存取速度慢,空间大;局部变量的空间位于内存中的“栈”,栈存取速度快,空间小。而且全局变量定义时有默认的初始值,比如整型全局变量的默认初始值是0.

l  全局变量在所有函数中都可以访问,所以如果参数传递是引用的话,会在函数中造成改变,影响其他函数,所以不经常使用全局变量。而在堆中有空间大的优势,所以当我们要定义一个大的数组时,可以用静态变量。

l  静态变量以static限定符修饰。即便定义在函数体内部,程序跳出时依然存在,而且保持原来的值不变。静态变量的一个特点是只定义一次,只在函数首次调用时被定义,所以可以利用这个特点记录函数被调用的次数:在函数体中定义static int count=0;

Count++;             静态变量也默认初始化为0

l  数组的初始化。定义的时候如何没有同时对数组中任何一个元素赋初值,那么数组中每一个元素的值都是不确定的。注意这里的同时和任何。同时强调的是只能从头开始连续赋值,任何强调的是其余未赋值的会初始化为0.


#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{int i, j;cout << "Case:1" << endl;for (i = 0; i < 4; i++){for (j = 0; j <= i; j++)//小于等于怎么写?{cout << "*";}cout << endl;}cout << "\n";cout << "Case:2" << endl;for (i = 0; i < 4; i++){for (j = 0; j < 4; j++){if (j >= i)cout << "*";elsecout << " ";}cout << endl;}cout << "\n";cout << "Case:3" << endl;for (i = 0; i < 4; i++){for (j = 0; j <=3+i; j++){if (j >=3- i)cout << "*";elsecout << " ";}cout << endl;}getchar();return 1;
}
	#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>int main()
{char a[10], b[10];char c, d;scanf("%s", a);printf("a中保存的字符串为:%s\n", a);c = getchar();printf("c中保存的字符为:%c ", c);gets(b);printf("b中保存的字符串为:%s\n", b);d = getchar();printf("d中保存的字符为:%c", d);getchar();return 0;
}

l  上机考试总会有测试用例,测试用例都存放在文件中,这就需要从文件中读取数据。

While(scanf(“%d%d”,&a,&b)!=EOF)

{

}

EOF实际是一个宏定义,等于-1,意思是End Of File。而scanf读到文件尾也会返回-1.这时候才跳出循环。Scanf读取数据成功时,会返回成功读取的数据的个数

l  在循环体中要想读入数据显示出来,有格式化输入输出函数scanf("<格式化字符串>", <地址表>);printf("<格式化字符串>",<参量表>);还有非格式化输入输出函数gets(字符数组名或指针);puts()。后者占用内存更小,且可以读入空格,直到回车终止。Scanf遇到空格会停止,并在后面加终止符\0。puts()在输出字符串时会将’\0’自动转换成’\n’进行输出,也就是说,puts方法输出完字符串后会自动换行。

Scanf遇到空格、Tab、回车时自动加\0停止输入,但之后的空格和回车仍然在缓冲区,会读入到之后的getchar中。为了避免这个问题,可以在两次输入之间插入一个getchar()把这个回车符吃掉。或者在scanf的时候多写一个%*c,读取最后一个回车符,但是不把它赋予任何变量。

gets:可接受回车键之前输入的所有字符,并用’\0’替代‘\n’.回车键不会留在输入缓冲区中

https://blog.csdn.net/xingjiarong/article/details/47282817

scanf 函数报错 error C4996: 'scanf',因为vs认为c标准函数不安全。可以依照提示添加一个宏定义https://blog.csdn.net/jh0703/article/details/47820875

l  Gets时不需要考虑EOF

Char str[10];

While(gets(str))





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2017-2019】Gartner战略技术趋势一览

来源&#xff1a;学术plus 、装备参考近期&#xff0c;Gartner公布了2019年十大战略技术趋势的预测&#xff0c;值此之际&#xff0c;本文总结回顾并简要分析了2017-2019三年的战略趋势变化。Gartner副总裁兼研究员David Cearley指出&#xff1a;在智能、数字、网格三大领域下的…

目标检测必看——RCNN是怎样融合了分类与回归,CNN与SVM

人和动物的区别之一是人能使用工具&#xff0c;而在人开始使用磨制石器时人类进入新石器时代。在目标检测领域&#xff0c;也有一个划时代的算法&#xff0c;在它之后目标检测开始进入深度学习的时代——它就是今天的主角&#xff1a;R-CNN。在RCNN之后&#xff0c;出现了更多优…

《自然》杂志:面对“电车难题”,不同国家的人有不同的道德选择

来源&#xff1a;36Kr电车难题原本只是一个思想实验。但是无人车的发展却绕不开这个问题。因为机器在无论如何都会撞死人的情况下必须靠预先植入的道德代码做出判断&#xff1a;该牺牲谁&#xff0c;该保谁。但是一项有全球230万人参与的调查表明&#xff1a;这个问题并不存在普…

Mac OS X Terminal 101:终端使用初级教程

文章目录1 为什么要使用命令行/如何开启命令行&#xff1f;2 初识Command Line3 关于 man 命令4 命令行&#xff0c;文件和路径 4.1 两种路径&#xff1a;绝对路径和相对路径4.2 切换到其他路径和目录4.3 处理特殊字符4.4 查看隐藏文件4.5 前往其他卷5 用Command-Line管理文件 …

Fast R-CNN整体把握

RCNN很好地解决了目标检测分类和定位的问题。但是缺点是速度太慢。 原因1&#xff1a;2k个候选区域都要经过变形成统一的正方形才能依次输入CNN进行特征提取。候选区域可能是互相包含的&#xff0c;这就导致原图同一个区域特征的重复提取。 原因2&#xff1a;RCNN的分类和回归…

2万字看完腾讯最纯粹的一届WE大会:从黑洞、虫洞到克隆猴

来源&#xff1a;虎嗅APP腾讯还有梦想&#xff0c;因为腾讯还有WE大会。5年来&#xff0c;腾讯从全世界邀请了几十位难得一见的科学家不远万里来到北京展览馆&#xff0c;比如去年邀请的剑桥大学教授、著名宇宙学家霍金&#xff08;视频演讲&#xff09;&#xff0c;不想成为绝…

Fater R-CNN 整体把握

在R-CNN中提到过&#xff0c;候选区域的提取和之后的目标检测其实是独立的&#xff0c;所以我们可以使用任意的算法如SS。Fast-RCNN改进的是目标检测部分&#xff0c;但是其实候选区域的提取也挺费时的&#xff0c;Faster R-CNN就把改进方向放在了这里。 我们已经领略到了CNN的…

马斯克,特斯拉首席小白鼠

来源&#xff1a;量子位伊隆马斯克&#xff0c;比你想的还要激进。作为特斯拉CEO&#xff0c;马斯克经常一边自己坐在Model S上&#xff0c;一边召开电话会议。车辆的驾驶交给Autopilot&#xff0c;也就是那个时不时会出次意外的自动驾驶系统。他这么做不仅仅是想节约时间&…

windows下caffe+CPUOnly实现MNIST手写分类

工具下载 微软官方移植的Caffe&#xff1a;https://github.com/Microsoft/caffe 对属性表的操作需要把实例属性表的后缀改成vs可用的.props 打开同一个文件夹下的Caffe.sln&#xff0c;查看其中的属性表<CpuOnlyBuild>true</CpuOnlyBuild><UseCuDNN>false<…

Yann LeCun专访:我不觉得自己有天分,但是我一直往聪明人堆里钻

来源&#xff1a;AI 科技评论摘要&#xff1a;纽约大学教授、Facebook 副总裁与首席 AI 科学家 Yann LeCun 由于对深度学习的突出贡献&#xff0c;被誉为深度学习的「三驾马车」之一&#xff0c;更被称为「CNN」之父。Yann LeCun 也一直非常活跃&#xff0c;发论文、教学、创立…

任务分配调整

在经过新一轮分工讨论后&#xff0c;我们将我们最初的分工做了一次更新。截图于此。但是同样&#xff0c;基于敏捷开发的原则&#xff0c;任务将会在过程中为适应遇到的情况而不断更新。 请大家及时完成各自任务&#xff0c;并每天22点之前在tfs上更新完毕&#xff0c;同时将当…

以LeNet-5为例理解CNN

在用caffe实现对MNIST手写数字分类的过程中发现利用的网络是LetNet-5.决定从这个网络入手好好认识一下CNN。 LeNet-5早在1998年就出现了&#xff08;5表示5层模型&#xff09;&#xff0c;标志着CNN的诞生。以其作者YannLeCun的名字命名。但是却没有得到广泛的应用&#xff0c;…

任正非最新谈话:直到2006年,我才真正抛弃自杀的念头

来源&#xff1a;世界科技创新论坛摘要&#xff1a;日前&#xff0c;一份任正非会见索尼CEO吉田宪一郎会谈纪要流出&#xff0c;这份纪要以吉田宪一郎发问任正非的视角&#xff0c;揭开了不少华为鲜为人知的故事&#xff0c;其中涉及华为的管理、创业之初的故事&#xff0c;还有…

前沿 | 历时十二年!曼彻斯特百万级神经元的类脑超算终开启

具有百万处理器内核的「脉冲神经网络架构」或 SpiNNaker&#xff0c;每秒能完成约 200 兆次运算。来源&#xff1a;机器之心摘要&#xff1a;这台世界最大的神经形态超级计算机由曼彻斯特大学计算机科学学院设计和制造&#xff0c;它被设计和制造成与人脑相同的工作方式&#x…

Caffe中的卷积实现

https://www.zhihu.com/question/28385679 https://github.com/Yangqing/caffe/wiki/Convolution-in-Caffe:-a-memo 作者贾扬清亲自解释了这个问题。Caffe框架是他在研究生毕业毕业前两个月的时间写的&#xff0c;自然有一些缺点&#xff08;占用内存方面&#xff09;。其实卷积…

小程序创业:新金矿、野望与焦虑

来源&#xff1a;视觉中国摘要&#xff1a;小程序正在带来新的红利&#xff0c;互联网上的生意可以再做一遍&#xff1f;张远想要尽可能地保持低调&#xff0c;但现在这个愿望正在变得越来越难。在最近几个月阿拉丁小程序排行榜上&#xff0c;糖豆广场舞、糖豆爱生活、糖豆每日…

网络编程套接字socket

哈哈哈&#xff0c;之前的保存成草稿忘了发 目录 一 . 先回顾一下网络初始中的相关概念&#xff1a; 1.网络通信&#xff1a; 2.局域网&#xff1a; 3.广域网&#xff1a; 4.IP地址&#xff1a; 5.端口&#xff1a; 概念 格式 6.协议&#xff1a; 7.五元组&#xff1a; 8.分层…

增长率高达40%!物联网平台如何拉动产业马车飞速狂奔

来源&#xff1a; 联动原素、安信通信研究、IoT Analytics物联网智库 整理发布物联网的低准入门槛造就了这个内容庞大的产业生态&#xff0c;致使更多的企业融入进来。伴随物联网大规模发展&#xff0c;物联网平台在其中的作用越加凸显&#xff0c;新一轮资本涌入、技术开发、业…

中国代表性Fintech企业动态观察

来源&#xff1a;全球高科技联盟阿里巴巴系企业一、阿里巴巴金融科技和区块链总体布局揭开面纱9月28日&#xff0c;阿里达摩院官网正式上线&#xff0c;公开5 大研究领域、14 个实验室&#xff0c;从中可一探阿里在金融科技和区块链领域的总体技术布局。阿里金融科技领域致力于…

windows+caffe下对CIFAR训练

CIFAR是什么 CIFAR-10和CIFAR-100都是带标签的大小为8000万小图数据集的子集。其中CIFAR-10有10类&#xff0c;每类6000个大小为32x32的图像。其中训练图像和测试图像的比例是5:1&#xff0c;对每类图像&#xff0c;随机选择1000个测试图像&#xff0c;剩下的就是训练图像。注意…