A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵安庆 中级黑马   /  2016-5-8 00:38  /  746 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、字符串及字符数组
1) 什么是字符,字符串?
'a'        字符常量
"a"         字符串常量

2)在C语言中存储字符串特点
"abc"多拿出一个空间存储字符串的结束符 '\0'

3) 字符数组
1) 定义
char 数组名[长度] char c[10];
char 数组名[第一维][第二维]

2)初始化 同普通一维数组的初始化
char str[10]={"abc"}; // strlen 3      sizeof(str) 10
char str[]={"abc"}; // strlen 3          sizeof(str) 4
char str[]="abc";     // strlen 3           sizeof(str) 4

3)访问
同普通一维数组的访问一致,  数组名[下表]


2、字符串的存储
字符串用字符数组存储。

字符数组和普通数组的差异 初始化:
char a[5]={"ABC"};
a[0]='A'
a[1]='B'
a[2]='C'
a[3]='\0'
a[4]='\0'
char s1[]={"afadsfasfa"}; char s2[]="xxxx";


3、字符串的结束符'\0'注意事项
char s3[3]={'a','b','c'}; //用字符数组存字符
char s4[2]={'b','c'};

%s :用来输入输出字符串。
%s特点:遇到'\0'就结束,否则停不下来,直到遇到'\0'
printf("%s",s4); //bcabc

%s 接收键盘输入
char ch[10];
scanf("%s",ch); //输入字符串的时候不能有空格
//aaaaaaaaaab ,输入的长度>数组长度,不安全的


4、什么是地址?
计算机为了管理内存单元,给每个字节都进行编号,这个编号的就是地址
就相当于房间的编号。


5、什么是指针?
地址就是指针
变量访问的方法:直接访问  间接访问
1)直接访问:用变量名访问其代表的存储空间
2)间接访问:通过内存地址访问地址所对应的存储单元的内容


6、指针和变量之间的关系
指针可以间接的访问变量的值
1)指针变量:就是用来存放地址的变量
指针变量也遵守变量使用的规则 :先定义 --->初始化 -->使用

2)如何定义一个指针变量
数据类型* 指针变量名;
int *p;

3)指针变量初始化
为什么要进行初始化?
首先,如果普通的一个变量没有初始化,会有什么后果? //垃圾值
对于指针变量,int *p;
定义之后,没有初始化称谓:野指针
*p = 10; //如果不初始化直接使用,可能会导致系统崩溃

(1)定义的同时进行初始化
int *p=NULL;//赋值为NULL ,表示谁都不指
int *p1 = 0; //同上

int a=10;
int *p2=&a;
int *p3=&a;
int *p4 = p2;
p3 = p4; //指针的指向可以改变

(2)先定义,后出初始化
int *p;
p = NULL;
int *p1;
p1=&a;

注意:
1)多个指针可以指向同一个变量
2)指针的指向是可以改变的
3) int *p; p = 100;//错误的 存放的时地址,现在给的时整数值
4)*p = &a;错误 //*p是整型的变量,只能赋值数值

int *p = &a;
*p 就是访问p中存放的地址代表的存储空间的值
p指向的存储空间的值


7、指针的应用场景
1)在被调函数中,修改主调函数的变量值
2)可以让函数有多个返回值


8、多级指针介绍
什么是多级指针?
答: 二级及以上的指针称谓多级指针。

一级:指针指向的是一个基本数据类型变量的地址
二级:指向的又是一个指针变量的地址

int a = 10;
int *p = &a; //p是一级
int **p1 = &p; //p1 ---> p p1是二级指针变量

9、指针变量为什么要区分类型
前提:不同类型的指针变量在内存中占用8个字节 为什么都占用8个字节还要区分类型呢?

int a=10;
char *c = &a; //从变量a的首地址开始,取了1个字节(实际4个,取少了)
double *c2 = &a; //从变量a的首地址开始,取了8个字节(实际4个,取多了)
Int *c3 = &a;  // 从变量a的首地址开始,取了4个字节(实际4个,刚好)

结论:为了避免数据引用错误,所以定义什么类型的指针变量,就应该指向什么类型的数据。

1 个回复

倒序浏览
66666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马