字符串输出输入函数,const修饰符,内存分区,动态内存管理,指针和函数,结构体
1.字符串输出输入函数
读入字符串的方法:
1) scanf 特点:不能接收空格
2) gets 特点:可以接受含有空格的字符串 ,不安全
3) fgets(); 特点:可以帮我们自动根据数组的长度截取适当的长度保存,安全
如果输入的长度大于数组的长度,自动将数组最后一个元素保存为\0
如果输入的长度小于数组的长度,会自动先保存\n,再保存\0 使用格式:fgets(ch,sizeof(ch),stdin);
输出字符串的方法:
1) printf() %s 缺点:不能自动换行
2) puts() 特点: 可以自动换行
3) fputs()特点:不可以的自动换行
使用格式:fputs(ch,stdout); //stdout表示输出
2.const修饰符的使用
作用:const作用可以把修饰的变量变成只读的(常量)
1、修饰变量
const int a=23;
int const a = 23;
2、修饰指针
const int *p; //指向可变 ,值不能变
int const *p; //同上
int * const p; //指向不可变,值可变
const int* const p;// 指向和值都不能变
技巧:
const 在 * 的左侧 : 指向可变,值不能变
const 在 * 的右侧 :指向不可变 值可变
const 在 * 的两侧 :指向和值都不能变
3、C语言中的内存管理分配.五大区
内存分为5大区域
栈区 -- 存放局部变量,临时变量
堆区 -- 程序运行过程中,动态分配的内存
BSS区-- 未初始化的全局变量和静态变量
数据段 (常量区)-- 已经初始化的全局变量和静态变量
代码段 -- 源码代码程序编译产生的二进制数据
4.动态内存管理
1) malloc
(void *)malloc(n) //动态的向内存申请连续的n个字节 返回的是新申请的内存空间的首地址
int *p = (int *)malloc(100); //p是在栈区 malloc(100) 在堆区
malloc不会把新申请的空间初始化
memset(p,'0',100); //全部初始化为0
2) calloc
int *p = (int *)calloc(5,4); //申请5个长度为4的空间
calloc可以把新申请的空间初始化0
3) realloc
为已经存在的空间扩展大小
int *p = (int *)realloc(p,size);
4) free
释放我们指定的内存空间
free(p); //p是我们新申请的内存单元 free后,p是一个野指针
如果不释放,造成内存的泄露
5.指针和函数之间的关系
1)返回值是指针的函数 :指针函数
char * getday(){
return "星期一";
}
2)函数指针
指向函数的指针
格式:返回值 (*指针变量名)(函数的参数);
int sum(int a,int b){
return a+b;
}
定义:
格式一:int (*p1)(int a,int b); // 函数指针p1 只能指向返回值是int类型,并且有两个int 类型参数的函数。
p1 = sum;
格式二:int (*p2)(int,int);
p2 = sum;
格式三:int(*p3)(int a, int b) = sum;
6. 1、什么是结构体?
答:若干个相同或者不同类型的数据组成的新的构造类型
2、定义格式:
struct 结构体名{
成员列表;
};
3、定义结构体变量。
struct stu{
int age;
}stu1,stu2;
//匿名结构体
struct{
int model;
}s1;
//先定义结构体,后定义变量
struct stu stu3;
4、初始化结构体变量
a. 定义结构体同时初始化:
struct stu{
int age;
char name[20];
}stu1={23,"sss"};
b. 先定义结构体变量的时候初始化
struct stu stu3={18,"sb"};
c. 先定义结构体变量,后初始化
struct stu stu4;
strcpy(stu4.name,"xxxx");//stu4.name="xxx";
5.结构体存储空间计算
结构体在内存中占用的存储空间是 所有元素占用空间之和(考虑对齐)
1.逐个元素对齐(下个元素与上个元素对齐)
2.整体对齐(最后的和能单独整除所有元素)
3.如果是数组,使用的是基本类型来对齐
字符串输出输入函数,const修饰符,内存分区,动态内存管理,指针和函数,结构体的更多相关文章
- C/C++ 中 const 修饰符用法总结
C/C++ 中 const 修饰符用法总结 在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家 ...
- const修饰符限定的常量
类型前加const修饰符限定变量为只读,称为常量,定义时必须初始化,且初始化后编译器不允许再修改常量的值. 一.常量的定义 const在类型前面 const int value: //value是co ...
- [原创] 基础中的基础(二):C/C++ 中 const 修饰符用法总结
在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家梳理一下知识,给大家一点点帮助.作者是菜鸟一 ...
- 转载----C/C++ 中 const 修饰符用法总结
感谢原创作者,写的好详细.不忍错过,所以转载过来了... 原文地址: https://www.cnblogs.com/icemoon1987/p/3320326.html 在这篇文章中,我总结了一些C ...
- Delphi 中 函数参数中的 const 修饰符的本质以及注意事项
来自:http://blog.csdn.net/farrellcn/article/details/9096787 ------------------------------------------ ...
- C++中 容易忽视的const 修饰符
C++可以用const定义常量,也可以用#define定义常量,但是前者比后者有更多的有点: (1)const常量有数据类型,而宏常量没有数据类型.编译器可以对const进行类型安全检查,而后者只进行 ...
- [C++]const修饰符
Date: 2014-1-1 Summary: const 修饰符笔记 Contents: 1.const 修饰符 声明一个常量数据类型 , 在编译时就确定数据类型 2.const 与 指针 一般情况 ...
- const修饰符与函数
一.用const修饰函数的参数 函数参数类型前加const指明该参数为常量,在函数内部不可改变. void func(const int x) { //x不可以在内部进行赋值等操作. } 注:当参数为 ...
- C++ c++与C语言的区别(三目运算符,const修饰符)
//区别⑦:三目运算符(C++版本) #include<iostream> using namespace std; //三目运算符 C语言返回变量的值 C++语言是返回变量本身 void ...
随机推荐
- PHP基础 变量
$a=123;$b="123";$c='456';$d=<<<a <div style=" qwerqwrqwt </div>a; / ...
- 【Ajax 2】封装Ajax的核心对象:XMLHttpRequest对象
导读:AJAX利用一个构建到所有现代浏览器内部的对象-XMLHttpRequest-来实现发送和接收HTTP请求与响应信息.那么,XMLHttpRequest对象是怎么创建和封装的呢? 一.简介 1. ...
- 使现有的VSCode成为便携版(绿色版)
VSCode可以说是各种代码编辑器前端之中的神器了,相对体积小且扩展性强,我们希望将它携带在U盘中在各种工作环境中使用,官方也提供了在Windows,Linux和MacOS三大平台中使VSCode便携 ...
- resin web项目的 编码问题
问题描述: 服务器迁移,迁移以后Linux系统编码由 UTF-8 变成了GBK !!! 导致在resin 中运行java web项目,调用 http 接口,解析http 接口的返回内容 如:xml 时 ...
- PAT (Advanced Level) 1038. Recover the Smallest Number (30)
注意前导零的消去. #include <iostream> #include <string> #include <sstream> #include <al ...
- Best Time to Buy and Sell Stock(动态规划)
Say you have an array for which the ith element is the price of a given stock on day i. If you were ...
- 2017多校Round10(hdu6171~hdu6181)
补题进度:5/11 1001(双向BFS) 题意: 给你一个类似移子游戏,给你初始状态和终止状态,问初始状态到终止状态至少要移多少步,如果步数>20就-1 分析: 很明显的BFS了,不过普通的B ...
- otl_stream流相关绑定变量
声明绑定变量 本章节将详细的说明如何在otl_stream流里面声明绑定变量. SQL语句.SQL语句块或存储过程在程序里面使用的时候总是带有占位符.OTL里面带有一个小的解析器用来解析这些占位符,并 ...
- Visual Studio VS如何修改代码字体
工具-选项-环境-字体和颜色
- 怎样使用SSH连接OpenStack上的云主机
转载请注明出处.否则将追究法律责任http://blog.csdn.net/xingjiarong/article/details/47021815 在上一篇博客中我介绍了怎样在OpenStack中创 ...