2021年07月12日 笔记
指针
内存以字节编址,32位系统,内存地址编址有32个bit表示。
int m=20;
变量m占据4个字节。
C语言中
1 | // 定义一个指针变量 |
指针变量p只会记录数据的首地址,因为地址的长度都是一样的,所以指针的大小都是一样的。
1 | int a; |
*p表示到指针变量p取值,int占用4个字节,所以*p
连续取出4个字节。
1 | p++ |
等价于
1 | p=p+1*sizeof(int) |
把int类型的m的地址赋值给char类型的指针是否可以?
1 | char *t; |
可以,但取值的时候会出错。
强制类型转换
1 | char *t; |
强制吧m的地址赋值给char变量t。
1 | int m=30 |
k赋值给m是否有问题?
1 | m=k; |
没问题。
m赋值给k有没有问题?
1 | k=m; |
有问题。
二维数组
C语言写法
1 | int a[3][4]; |
内存条没有二维的,所以,二维数组得转换为一维的来存储。
行序优先存储
Java二维数组写法1
1 | //还没有分配空间。 |
后续使用
a[0][1]
另一种二维数组的写法
1 | int[][] a=new[3][]; |
此时分配的空间就不连续了。
问:java中二维数组数组的空间是不是都是连续的
答,不一定。
a.length表示的是行的数目
a[0].length表示第一行的列数
初始化
静态初始化
1 | int a[][]={{1,2,3},{4,5},{7}}; |
静态初始化只能在声明是使用,不能先声明再初始化。
也就是如下写法是错误的:
1 | int a[][]; |
编程题 从键盘接收10个数,存储为2*5的矩阵,并打印出来
1 | public class InputMatrix { |
编程题 找鞍点
二维数组中的一个元素,该元素在当前行中是最大的,但是在该元素所在的列是最小的。
例如,在如下的二维数组中:
1 | 1 2 3 |
3就是鞍点。
查找二维数组的鞍点
1 | public class SaddlePoint { |
编程题 输出杨辉三角
1 | 1 |
编译
编译javac java解释给JVM
Java———->中间码(字节码).class——————->平台1 的JVM 来执行
|
|———————->平台2 的JVM 来执行
C语言
简化的main方法
1 | int main(){ |
完整的main
1 | int main(int argsnum,char[][] args){ |
环境变量
做什么用,
例如你在命令行cmd中输入一个copy,cmd如何知道copy命令的可执行文件在字在哪里呢?
先在当前目录下查找copy的执行性文件
如果没有找到则到系统文件中取查找可执行性文件
如果系统中也没有该命令,则到系统中的PATH环境变量中记录的地址中取查找该命令的可执行性文件
如果PATH中的记录的地址也没有找到,则报错,说明找不到该可执行性文件。