大概学习了:
1.c指针了解了一下
2.写了一道 w3cshool的初级算法编程题目
3. 了解了一下数据结构
突然决定学习数据结构,虽然还要考vb二级和数据库三级,但是我觉的还是可以尝试一下。
学习数据结构必须要学习C语言的指针
虽然是一道简单的题目,数组查询题目,仍然值得高兴,
居然带动了一个身边的人一起学习编程。
它在刷w3cshool的题目,我以前学过,但是放弃了,我是一个容易放弃的人,但是我会不断尝试,所以这次我决定有空的时候继续刷一下这些题目,
一些凌乱 的笔记放进去把
直接补一下基础:
指针简单又有趣?
简化c编程任务,还有一些任务,动态内存分配,没有指针是无法执行的,
变量都有一个内存位置,内存位置都定义 了 可使用连字号(&)运算符访问的地址,他表示了内存中的一个地址。
#include <stdio.h>
int main(){
int var1;
char var2[10];
printf('var1变量的地址为: %\n", &var1)
printf('var2变量的地址为: %\n",&var2);
return 0;
}运行产生结果
var1 变量的地址: 0x7fff5cc109d4
var2 变量的地址: 0x7fff5cc109de
再仔细分析一下,上面那句话
变量都有一个内存位置,
内存位置定义了可使用连字号(&)运算符访问的地址
他表示了内存中的一个地址
&var1 就是 var1 变量的内部菜鸟位置
printf("%\n",&var1)
ox7fff5cc109d4
什么是指针呢?
指针是一个变量。 其值为另一个变量的地址,
即内存位置的直接地址。
就像其他变量或者常量一样,必须在使用指针存储其他变量之前,对其进行申明
例如:
type *var-name;
type是指针的基本类型,必须是以个有效的c数据类型,var-name 是指针变量的名字
用来声明指针的星号,
仔细阅读一下:
星号是用来指定一个变量是指针
int *ip;
double *dp;
float *fp;
char *ch;
整型指针变量
double型指针变量
浮点型指针变量
字符型的指针变量
所有的实际数据类型 对应的指针的值的类型是一样的。都是代表内存地址的
16进制数字
如何使用指针
- 第一个指针变量
- 把变量地址赋值给指针
3.访问指针变量中可以使用地址的值
用* 来访问操作数所指定的地址的变量的值。
#include <stdio.h>
int main(){
int var = 20;
int *ip;
ip = &var;
printf(“Address pf var variable: &\n”,&var);
printf(“Address stored in ip variable: %\n”, ip);
printf(“Address of *ip variable: %\n”, *ip);
return 0;
}
bffd83c
bffd8b3c
20
int *ip 意思 是 ip是一个指针变量 , ip就是 bffd8b3c 地址名
*ip 就是地址名中的值
仔细阅读
- 可以想象为返回指针变量中地址的值的操作符
ip是指针变量,&var是变量地址
&返回var变量中的地址,
&var的值是等于指针变量中的值的。
所以当我们真正要使用ip中的值时,我需要*ip;
也就是所 * 有两个作用
一个是 声明 ip是指针变量
NULL 指针
变量声明的时候,如果没有确切的地址可以赋值,为指正便令赋值一个NULL值是一个良好的编程习惯。
NULL 指针是一个定义在标准库中 值为0 的常量。
#include <stdio.h>
int main()
{
int *ptr = NULL;
printf(“ptr 的地址为 %p\n”,ptr);
return 0;
}
这是NULL 技术
操作系统上不允许 访问地址为0 的内存。
内存0有重大 的意义
它表名,指针不指向可访问的位置,如果指针为0,假定它不指向任何位置。
if(ptr)
if(!ptr)
检查ptr指针变量是否为空
var str1 = “”
var str2 = “”
var i = str1.indexOf(str);
alert(i);
var Str = “”
var Str1 = “”
alert(Str.toLowerCase().indexOf(Str1.toLowerCase()));
String.prototype._indexOf = String.prototype.indexOf;
String.prototype.indexOf.apply(this.ar
function mutation(arr) {
var str1 = arr[0].toLowerCase();
var str2 = arr[1].toLowerCase();
var x = str1.indexOf(str2)
if(x>0){
return true;
}else{
return false;
}
}
mutation([“hello”, “hey”]);
改进一下;
for(var i = 0;i < arr[1].length;I++){
if(arr[0].toUpperCase.IndexOf(arr[1][i].toUpperCase())==-1){
return false;
}
return true
}
指针就是地址
地址就是指针
指针变量: 才是存放内存单元地址的变量
指正的本质: 是一个操作受限的非负整数
基本类型的指针
指针和数组
include <studi.o>
int main{
}
地址: 内存单元的编号,从零开始的非负整数 0 ----ffffffff
分类:
基本类型的指针
基本类型的指针 基本类型的指针 基本类型的指针 基本类型的指针
基本类型的指针
p 1000H
i 2000H
3000H j
i = 10
2000H 10 i
i的地址给p
1000H 2000H p
i的地址发给p,这就叫做p的指针指向i
p保存了i 的地址,p就代表了i,i和p
int *p;
int i = 10;
int jl
char ch = ‘A’;
p = &i;
return 0;
数组查询算法 w3csool
var str1 = “”
var str2 = “”
var i = str1.indexOf(str);
alert(i);
var Str = “”
var Str1 = “”
alert(Str.toLowerCase().indexOf(Str1.toLowerCase()));
String.prototype._indexOf = String.prototype.indexOf;
String.prototype.indexOf.apply(this.ar
function mutation(arr) {
var str1 = arr[0].toLowerCase();
var str2 = arr[1].toLowerCase();
var x = str1.indexOf(str2)
if(x>0){
return true;
}else{
return false;
}
}
mutation([“hello”, “hey”]);
改进一下;
for(var i = 0;i < arr[1].length;I++){
if(arr[0].toUpperCase.IndexOf(arr[1][i].toUpperCase())==-1){
return false;
}
return true
}
人们渴望的力量其实就隐藏在他们内心之中