计算机语言

计算机语言,第1张

计算机语言 计算机语言学习

计算机语言
  • 计算机语言学习
  • C
    • 1. memset 初始化
    • 2. sprintf
    • 3.memcpy函数
    • 4.exit退出函数
    • 5. continue与break
    • 3.指针与数组
  • C++
    • 1.输出
    • 2.输入
  • C# - CTF
    • 001. Console . ReadLine ()
    • Substring(start_index)
  • Assembly
    • 位运算
  • Python
    • 1.数组切片 *** 作基本表达式
    • python isalpha()函数
    • python find函数
    • Unicode编码
    • Bytes类型 与 函数 encode()
    • hex()函数
    • int( )函数
    • upper()函数
  • Java
    • 第一个java程序
  • HTML


title: 计算机语言学系Language-Code
date: 2021-12-16 14:01:30
tags: 007-计算机语言学习

C 1. memset 初始化

memset(Buffer, 0, sizeof(Buffer));
memset对Buufer从第[0]开始把数字’ 0’ 复制sizeof(Buffer)个长度给Buffe

注意这里单位长度sizeof(Buffer), 比如一个int 4字节

2. sprintf

衔接字符串

sprintf(Buffer, “%s%02X”, Buffer, a[i] ^ b[j]);"%s=Buffer,%02X=a[i] ^ b[j]"
sprintf(str, “%s world!”, “hello”);

3.memcpy函数

memcpy(d, s+11, 6);
表示从 s[11] 字符开始复制6个给

4.exit退出函数

#include
exit(0);

5. continue与break

contiune是满足条件不再执行他之后的语句

break 是直接跳出循环,不管它之后有没有东西…

有时候bbreak与continue的作用是一样的

3.指针数组

指针-乱讲

10.1.1地址与指针

指针就是所指向变量的地址,我们要通过调用地址来访问指定内存的储存单元 eg:如房间编号5008指向寝室的4个sb 房间的指针就是门牌号

简而言之,指针就是地址

变量i,指针p

p是i的房间编号,通过p我们知道i里面有啥子鬼

一个int有4字节,char有1字节 eg 1一个房间装4或1个人

10.1.2变量与指针

对变量的存取是通过地址实现的

10.1.3指针变量

类型 * 变量名 专门用来放地址的变量类型,指针变量类型

指针变量的赋值 &x 地址运算符,表示x的房间编号 eg int p=&x 指针运算符, 表示访问指向的房间 eg printf("%d", p); 当赋值运算 p=&x,时 我们可以同时用2者访问同一个房间 房间绝不是简单的一个int型编码,而是指针类型的数字编码 ---->问题,可不可以 *p=8; 注意&*P表示取p指向元素的地址

指针变量的引用

int *p , q 只是表示p是指针,而 q 是 int 变量

10.1.4 指针的加减

int*p,arr[5]

p=arr;

p+i 或者a+i 表示&a[i]数组元素的地址

*(p+i)或者 *(a+i) 表示a[i]数组的元素

指针的递增递减

p++就是指向下一个房间的门牌号

*p++就是 *(p++), 表示指向下一个房间的元素

*p-- 同上;

p–同上;

—>注意 , p++ 后,指针值会发生改变,即门牌号发生了改变,如果还要从头开始访问,要重新回到最初的门牌号

10.2.1一维数组与指针

数组名表示首地址

int *p , arr[7];

p=arr;

p=&arr[0];

10.2.2二维数组与指针

二维数组是一维数组 以直化曲

在a [x] [y] 数组中相关概率的混淆

地址混淆篇

a默认为a [0] [0]的地址, 没有解维

它后面可以跟着2个索引

跟一个索引 a+x 表示 a [x] [0]的地址

跟2个索引 [ * [a+x]+y ] 表示即 a [x] [y]的地址

同上,有…

*a , 此刻已解开1个维,默认a[0] 的地址, 故a[0]也表示 * a的地址 未接索引时默认& a[0] [0] 只能接1个索引, 即 ( *a)[x] 表示& a[0] [x]的地址

同理a[x]表示 未接索引的a[x] [0] 接了索引时( * a [x] ) [y]表示a [x] [y]

&a[4] 也可以接2个索引

( &a[4] ) [x] [y]表示 a[4+x] [y]

只能接1个索引的, +1表示指向写一个邻近的地址

可以接2个索引的,+1表示指向性下一行的地址

元素值混淆篇

表示a[x] [y]元素

*( *(a+x)+y )

*( a[x] + y )

*(&a [x] [y]) 其中 &a 默认&a[0]

*( *(a+x) ) [y]

注意, a[0]已 表示解维, &a[1]中a[0]解维后&又加维 [ * [a+x]+y ] 中,a+x没有解维,只是在一维上运算,要转到二维去加y

10.2.3字符串与指针

疑惑

char s[]={“hello,i am coming”};
char *p=NULL;
p=s;
printf("%sn",p);它会从第一个地址往后一直取
printf("%cn",p);
printf("%cn",
++p);
疑惑

char* str=“hello,i am a-xiang”;
//指针地址可以是字符串吗?好比地址是000020x,可以是zfcswdi吗…这可能使地址不连续
printf("%s",str);//它会从开始一直取到末尾
printf("%s",&str[5]);//它会从第6位开始一直取到末尾
10.2.4 字符串数组与指针-指针数组

数组里面放的是指针,本质数组,元素是char指针好比这句话

char* str=“hello,i am a-xiang”,
于是

char *arr[100]={“hello”,"i am ",“a-xiang”};
//直接已arr[i]访问其中的元素
10.3 指向指针的指针–二级指针

类型 ** 指针名字

int ** p;
如何访问它?破壳

int *(*p)
注意啦 *地址运算符是访问所在地址指向的元素

二级指针有个啥用? 可能就是把数据打包吧,就像酒店对房间进行有序化管理的输入输出

10.4 指针变量作为函数参数

脱离不了指针的本质

函数调用时,实参与形参的数据传递方向是单向的, 指针变量作函数也是如此, 调用函数不可能改变实参指针变量的值,但可以改变实参指针所指向变量的值

指针数组

数组字数组,数组里面放地址

int var[] = {10, 100, 200};
int i, *ptr[MAX];

for ( i = 0; i < MAX; i++)
{
ptr[i] = &var[i];
}
for ( i = 0; i < MAX; i++)
{
printf(“Value of var[%d] = %dn”, i, *ptr[i] );
} 要ptr输出得赋地址和给它

字符串指针数组,数组里面放字符串,

直接当数组用,不过它还附带地址

char str[]={“hello”,“a i am “,“a-xiang”};
printf(”%s”,str[2]); 不用赋地址,直接访问,还不用
运算符
数组指针,指针里面放元素,不太了解它

int (*a)[3];
估计a会指向应该二维数组
这样理解它,它就是一个数组
int (*a)[3]表示a[0][0]之后的3个元素相应的地址
(*a)[3]表示a[0][3]首行第3个的地址
a后面会加减,就可以实现数组地址的遍历
小括号让a与 * 结合,表示 a 是一个指针,这个指针指向了一个数组,数组中有 3 个元素,每一个元素的类型是 int 型。

10.5 返回指针值的函数

int f(int x, int y)
{
int
p;
最后得出结果result;
把结果地址给函数来返回;
p=&result;
return p;
}
10.6指针数组做main函数的参数

main函数称为主函数,是所有程序的运行入口

C++

1.头文件

#include
using namespace std;
i input o output stream 流

1.输出

cout << dx;
cout<<“Please input an int number:”< cout<<"The int number is x= "< 2.输入

std::__cxx11::basic_string::basic_string(xxx, D_ptr_1[1
std::__cxx11::basic_string::end(xxx)
像这些C++函数,你只需要看最后一句就可以了!最后一句就是它调用的函数

这些函数一般可以实现指针的传递,动态内存分配…

如何分析一个陌生的东西,还比

__gmpz_init_set_str(v5, “65537”, 10LL);
东西,他确实是一个函数,点进去看,啥也没有,其实这更加确定了它是一个系统函数!系统函数就去百度呗,然后看它是什么作用

C# - CTF 001. Console . ReadLine ()

Console.ReadLine()
会等待直到用户按下回车,一次读入一行。

数组声明与引用

int [] xxxx = new int[5] { 1,2,3,4,5};
new int[5] 只是初始话数组的关键字
002. Substring函数

Substring(start_index)

检索子字符串。 子字符串在指定的字符位置 start_index 开始并一直到该字符串的末尾。

xxxx.Substring(start_index, scan_len)
  子字符串从指定的字符位置start_index开始, 且检索具有指定的长度scan_len。

参数一:起始位置(从start_index开始)

参数二:指定检索长度scan_len

Assembly 位运算

按位运算符
& 按位与 |按位或

~取反 >>右移 <<左移

& 按位 与 (且)
& 运算符(且)

A & B

对应的2数转换位2进制,

如果对应的位都为1, 那么结果就是1, 如果任意一个位是0 则结果就是0

| 运算符 (或)
| 跟 & 的区别在于

如果对应的位中任一个 *** 作数为1 那么结果就是1

有真即真

^按位异或 (非)
(同则0,不同则1)

2数相同,结果产生0

2数不同,结果就产生1

0 1 0 0 0 0 0 1

^

0 1 0 1 1 0 1 0

产生 0 0 0 1 1 0 1 1
运算符 (反)
是对位求反 1变0, 0变1

移位运算符把位按指定的值向左或向右移动

右>>

左<<

移动超过的位将丢失,而空出的位则补0

0 1 0 0 0 0 1 1 b (67)

向左移动两位67<<2将变成

0 0 0 0 1 1 0 0 b (12)

乘法<<

x<<1=x * 2=

x<<2=x * 2 * 2

x<<3=x * 2 * 2 *2

除法>>

x>>1 = x/2

x>>2=x/2/2

x>>3=x/2/2/2

取整运算

任何小数 把它 >> 0

可以取整 如3.14159 >> 0 = 3;

Python 1.数组切片 *** 作基本表达式

arr[ start : end : step ]
start不是左,是开始

end 不是右,是结束

当没有 符号 : 时 表示输出 arr [x]

当只有一个符号 : 默认 step = 1

step = 正号, 输出为正向,从start_index -->end_index 左到右 step = 负号,输出为负方向, 从end_index–>start_index 右到左

a[:] #从左往右
a[::] -->step=1正向
a[::-1]–>step= -1 逆序

a[1:9:]–>默认step=1,如果a[1:9:-1]输出[空]
a[6:] <–表示从a[6]~a[9]
a[:6] <–表示a[1]-a[5]
a[:6:-1] <-- 表示逆向a[9]~a[5]
a[6::-1] <–表示逆向a[6]~a[0]
a[-1:-6:]输出空[],默认step=1与实际-1矛盾
a[-1:-6:-1] <—a[9]-a[5]
a[-6:]
a[-6::-1]
另外在c语言里面可以有’a’==97,在python就不可以

python isalpha()函数

print str.isalpha();
检测字符串里面是否有字母.

如果出现非字母的东西,就返回’假’

只有全是字母才返回’真’

python find函数

txt = “abcdefabcde’”

x = txt.find(“c”,5,9)#8

print(x)

y = txt.find(“c”)#2

print(y)
字符串检索出现的位置,find(str,begin检索位置,end检索位置)

Unicode编码

他也叫万国码…
针对all国家语言的一种编码方式
ASCII就是一种
编码的方式…显示效果相同,但是所占空间的大小却不一样

所以虽然unicode很好,但是很浪费空间,于是就把unicode给细化一下
好比

utf-8,就一个byte的类型,你的数据再多,我都一个byte一个byet的存放
utf-16,空间就要大写,可能装一个byte还有剩的空间
utf-32 …

Bytes类型 与 函数 encode()

计算机要识别你的字符串要经过一下数据类型的转化
String–>Bytes–>计算机直接使用
Python的内置函数encode()可以将你的字符串变成计算机能够识别的中间语言

Unicode如和实现?
如果用utf-8来编码"中"
先来一个表

然后’中’的Unicode是 u4e 2d

它的大小是07FF<20013 所以选择

u 4e 2d
的二进制

分为3段放进去
然后就balabala…

下面是python的运行实例

print("这里藏着一个打印Bytes的函数")
def  Str_To_Bytes(x):
    	return "dqx_yyds-->b'%s'"% ''.join('\x%.2x' % y for y in x)

print("n这前2种写法一样n")

#"定义Bytes类型,可以直接定义或者转化encode"
str1=bytes('DQx','utf-8')
str2='DengQuxiang'.encode('utf-8')

print("n编码n他不会以16进制的形式展现,原字符打印,但它的类型变了,如果要打印,就去创造一个函数n")
print(str1)
print(str2)

print("函数转化,实际类型没变,只是换了一个方式打印出来")
print(Str_To_Bytes(str2))

print("n字节序n")
print("BE大端序: ",hex(int.from_bytes(str2,byteorder='big',signed=False)).upper())
print("LE小端序: ",hex(int.from_bytes(str2,byteorder='little',signed=False)).upper())
#"解码"
print("n解码n之后类型还回来了n")
#因为是默认的utf-8,所以的话下面的解码方式可以不写utf-8,主要是为了编码的方式一致
print(str2.decode('utf-8'))



print("nb'  x44 x71  x78' 解码后")
str4=b'x44x71x78'
str4=str4.decode()
print(str4)

对于String,Bytes,number,他们是不可变的类型,就像常量.不可更改//什么鬼?

于是就报错

除了utf-8的万国码外还有很多个性码…
unicode码兼容ASCII
为了字节空间的节约
有了utf-8,
u表示unicode
'中’的unicode是u 4e 2d

hex()函数

可以将Bytes转化为16进制…人后就不知道了

int( )函数
 int( Str or Digit , 进制)
  1. 如果有 只有Digit,就不能有进制
 int ( 10.25 ) "结果是10(Dec),因为 int "
 int ( 10, 16 ) "报错"
 int ("0xA",16) "结果是10(Dec)"
upper()函数

将字符串都大写

str="abc"
print(str.upper())
#输出ABC
Java

第一课-入门

第一个java程序

public class Dqx_Class {

public static void main(String[] Dqx) {

    System.out.println("Hello Dqx");
}

}

  1. public 是 公开的,

一个程序只能有一个public,并且文件名要与Class定义的文件名相同

  1. Class 类

好比 int char, class定义一个类,这个类就好比你的肢体,而你的人就是那个程序…

一个 .java可以有多个class, 好比你人有好多器官

  1. Public class name_xxx

name_xx是公开类的名字,要与文件名字一样

  1. static 静态的

…我现在不知道

  1. void 空的

  2. main 函数的入口

7.string [ ] 给参数列的一个表,来装参数?

  1. system.out.println(" … ")

定义字符串

一些cmd *** 作

  1. 生成class类文件

javac code_name_xxx.Java
2. 运行java程序

java class_name_xxx
3. 删除 .class文件

del *class

HTML

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5680013.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存