9.指针

1.return和exit

(1).return:中断函数,结束main函数,程序结束。

(2).#include<stdlib.h>;exit:结束整个程序;

2.函数声明和定义

调用函数前需要声明。

形参变量名可以不写,可以只写类型,可以只写类型,定义时,形参变量名一定要写。

3.分文件编程

按功能分文件编程。

4.指针

(1).指针也是一种数据类型;

(2).指针指向谁,就把谁的地址赋值给指针;

(3).需要操作*p,操作指针所指的内存;

(4).定义变量时,*代表是类型,它是指针类型int *;

(5).在使用变量时,*代表操作指针所指向的内存。

5.野指针

指针变量保存了没有意义的地址;

(1).只有定义了变量的内存,才是合法的地址。

(2).操作野指针变量没有任何问题。

(3).操作野指针所指向的内存才会段错误。 

6.空指针

空指针,给指针变量赋值为NULL;

7.指针的大小

32位编译器用32位大小(4字节)保存地址;

 64位编译器用64位大小(8字节)保存地址;

8.多级指针

9.[]

*p等价于*(p+0),同时等价于p[0];

*p等于p[0],操作的是指针所指向的内存。

10.void指针

(1).不可以定义void类型的普通变量,不能确定类型;

(2).可以定义void *变量,void指针;

(3).void可以指向任何类型的变量,使用指针所指向的内存时,最好转换为它本身的指针类型;

11.const修饰

int const *p = &a;

const修饰*,代表指针所指向的内存只读。

int * const p = &a;

const修饰指针变量,代表变量值为只读。 

12.数组名

数组名是数组首元素地址;

数组名是常量,不允许修改;

p指针变量指向首元素。

13.指针变量的加减

 14.二级指针

假设srt首元素时char *类型:

&str[0],代表首元素的地址,str等价于&str[0];

char *str[ ] = {"abc","cde","ijk"};
char **p = str;  //char **指向char *
char **p = &str[0];

 

如果char *str[]作为函数参数,可以改为char **str:

void fun(char **p)

以下三个情况等价:编译器都是当做**p处理!

void fun(char **p);
void fun(char *p[]);
void fun(char *p[100]);

 

posted @ 2018-11-24 17:12  西贡小傻  Views(124)  Comments(0Edit  收藏  举报