C语言回顾5

1.二维数组:是一个特殊的一维数组

完全初始化:

1)int a[2][3]={{1,2,3},{2,3,4}};

2)连续赋值int a[2][3]={1,2,3,2,3,4};

3)可以省略第一维的长度,第二维不能省

int a[][3]={1,2,3,2,3,4};

部分初始化

int a[2][3]={1,2,3};

先定义后初始化

2.二维数组的遍历

两重循环

3.二维数组的存储,先行后列,连续存储

二维数组的首地址=数组名=&a[0]=&a[0][0]

通过数组名计算数组占用的总字节数sizeof(a);

每行的字节数sizeof(a[0]);

每行有多少列:上面的数/每个元素占用的字节数

行数:sizeof(a)/sizeof(a[0])

4.字符串(双引号引起来,以\0结束)

用字符数组来保存字符串

1)char str[4]={"Hello"};

2)char str[4]="Hello";

3)char str[]="Hello";

字符串输出

print("%s",str);//str是字符串的首地址

print("%s",&str[0]);//%s从给定的地址开始打印,直到\0结束

%s输入的话,如果字符串有空格,则空格之后的字符无法被接收保存

计算字符串的长度:

1)使用strlen(str);函数

2)遍历数组,遇到\0结束循环,返回个数

字符串处理函数

1)输入输出函数,包含stdio.h

puts输出一个字符串,puts(字符数组首地址);

gets输入一个字符串,gets(字符数组名)使用gets会给出一个警告,存在越界问题。可以接收空格,但不可以格式话输出。

2)字符串连接函数,包含string.h

strcat(oldstr,newstr);//把newstr连接到oldstr后面,oldstr要足够大

strcpy(oldstr,newstr);//用newstr覆盖oldstr,oldstr要足够大

strcmp(str1, str2);//比较str1和str的大小,str1>str2返回大于0

strlen(str1);//计算字符串的长度

5.指针:地址

指针变量:存放指针的变量

指针变量的定义:数据类型 *指针变量名 或者 数据类型* 指针变量名

指针变量的初始化:int *p=&a;int *p=NULL;

用*p获取指针变量指向的内存空间

如果指针变量定义以后不进行初始化,这个指针变量存放的是一个垃圾数,这个指针变量,称为野指针

时间: 2024-07-30 22:54:47

C语言回顾5的相关文章

C语言回顾一“Hello world”

每个学程序的人都是冲"Hello world"开始进入神奇编程的世界! 简单的代码: #include <stdio.h> int main() { printf("Hello World\n"); } #include<stdio.h>将从编译器的安装文件夹下的include文件夹下去搜索stdio.h头文件.stdio.h是标准的输入输出流文件. int main()是整个程序的入口,就好比进入一个房间首先得找到进入房间的入口,也就是房门

「C语言回顾之旅」第一篇:指针详解

说明: 最近学校课程开设了<数据结构>的课程,无疑,数据结构的重要性在IT生涯的进阶路上是不可置疑的,也常说,数据结构是专业性与非专业性的分界线.所以无论以后走的是什么方向,毕竟是读计算机专业的,所以必须学好数据结构的.虽然目前我给自己定的方向是走运维/系统架构方向的,可有句话说得好,不懂开发的运维注定会被淘汰,在IT这一行,要让自己变得更加强大.最近也一直在学Python,感觉还不错,学数据结构相信对自己也肯定有好处的,对一些较为底层的知识有些了解和理解,这样才能走得更远! 无疑C语言就很重

C语言回顾

1.C语言共32个关键字 1)数据类型关键字 a.基本数据类型 void char int float double b.类型修饰关键字 short long signed unsigned c.复杂类型关键字 struct union enum typeof sizeof d.存储级别关键字 auto static register寄存器类型  extern const volatile 2)流程控制关键字 a.跳转结构 return continue break goto b.分支结构 if

「C语言回顾之旅」第二篇:指针详解进阶

说明: 第一篇回顾了指针的基本概念以及基本使用,因此对指针也有了一个较为清晰的思路,但实际上第一篇关于指针的内容是不太容易忘记的.这是第二篇中的内容是比较容易混淆,但对于指针的进一步学习也是非常重要的. 一.指向函数的指针 1.函数指针 ·函数指针即指向函数的指针,函数指针值为函数的入口地址,通过使用该指针,即可以使用该函数: ·编写一个程序返回两个数的最大值,通过函数指针调用函数: a.main函数代码如下: #include<stdio.h> int max(int *, int *);

c语言回顾之指针数组和数组指针

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的长度. 如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组. p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0] p++;       //该语句执行过后,也就是p=p+

2019/8/19 C语言回顾(1)

一.冯诺依曼 将计算机分为5个部分 (1)输入设备:键盘.鼠标 (2)输出设备:显示屏 (3)存储器: 内存(运行内存)RAM:内存条 外存 ROM: 硬盘.光盘.u盘.sd卡 寄存器:在cpu内部 .提高程序的运行效率 (4)运算器 (5)控制器 注:运算器和控制器集成为cpu 二.进制转换 1.十进制  逢十进一    78 = 8*10^0 + 7*10*^1 二进制  逢2进一      1001110 八进制  逢8进1 十六进制  0,1,....a,b,c,d,e,f 3位二进制数

C语言回顾2

1.运算符 连接操作数,构成表达式 按功能划分: 1)算术运算符 + - *  / % 2)关系运算符 3)逻辑运算符 4)按位运算符 按操作数划分: 1)单目运算符 2)双目运算符 3)三目运算符 2.运算符的优先级 分15级,1级最高,15级最低,优先级高的先于优先级低得进行计算,而在一个运算量的两侧的运算符优先级相同时,按运算符的结合性所规定的结合方向处理. 3.运算符的结合性 分左结合性(自左向右)和右结合性(自右向左) 4.强制类型转换分隐式和显示 1)用一个大数加上一个特别小得数,如

2019/8/20 C语言回顾(2)

一.逻辑运算符 &&  逻辑与 表达式1 && 表达式2 1          1          1 1          0          0 0          1          0 0          0          0 口诀:与0为0,与1不变 特点:当表达式1结果为真的时候,会继续判断表达式2的结果,但如果表达式1的结果为假,则不会去判断表达式2是否成立 || 逻辑或 表达式1 || 表达式2 1          1        1 1 

2019/8/24 C语言回顾(5)

一.二维数组 一般形式 数据类型 数组名[行标][列标]: | 数组内元素的数据类型 int a[2][3]; 数据类型 int 完全初始化 int a[2][3] = {1,2,3,4,5,6}; int a[2][3] = {{1,2,3},{4,5,6}}; 注意:行标可以省略,列标必须保留 不完全初始化 int a[2][3] = {1,2,3,4}; int a[2][3] = {{1,2},{3,4}}; 不初始化 数组置零 a[2][3] ={0}; 引用二维数组元素 数组名[行标