C重要知识点&疑惑点

来源:互联网 发布:北京百知尚行是培训吗 编辑:程序博客网 时间:2024/04/28 20:40

C重要知识点&疑惑点

 C重要知识点

数据类型的本质和变量的本质分别是什么

结构体一定义就是一级指针

浅拷贝和深拷贝的区别

指针做函数参数,输入和做输出的意思

 

C疑惑点

指针数组和数组指针的区别

结构体访问时->和.的区别

Include的时候 “”和<>的区别

int *p = NULL; p+1和p++的区别

 


C重要知识点

1. 数据类型的本质和变量的本质分别是什么?

 数据类型的本质就是固定内存大小块的别名

变量的本质是一块连续内存空间的别名

 

2. 结构体一定义就是一级指针

 

3. 浅拷贝和深拷贝的区别

      

4. 指针做函数参数,输入和做输出的意思

    指针做输入

    主调函数分配内存,被调函数使用

指针做输出

主调函数使用,被调函数分配内存

 

 C疑惑点

 1.    指针数组和数组指针的区别

 参考网址:区别详解

Int *p1[5];

Int (*p2)[n];

 

总结:

不带括号的为指针数组

不带括号的是数组指针

 

指针数组

数组里的每个元素都是int *类型的


数组指针

数组里每个元素都是int类型的,数组本身是个匿名数组.

p2是个指针,指向一个包含10 个int 类型数据的数组

 

详解

指针数组

定义 int *p1[n];

[]优先级高,先与p1结合成为一个数组,再由int*说明这是一个整型指针数组

 

p1先与“[]”结合,构成一个数组的定义,数组名为p1,int *修饰的是数组的内容,即数组的每个元素

 

指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间

数组指针

定义 int (*p2)[n];

()优先级高,首先说明p2是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p2的步长。也就是说执行p2+1时,p2要跨过n个整型数据的长度。

 

在这里“()”的优先级比“[]”高,“*”号和p2构成一个指针的定义,指针变量名为p2,int 修饰的是数组的内容,即数组的每个元素。数组在这里并没有名字,是个匿名数组。那现在我们清楚p2 是一个指针,它指向一个包含10 个int 类型数据的数组,即数组指针。

 

所以数组指针也称指向一维数组的指针,亦称行指针。

      

2.    结构体访问时->和.的区别

 结构体变量的引用和赋值,有两种形式,

一种是用符号”.”

一种是用符号”->”

//结构体指针变量用->       MyStruct *p = (MyStruct*)malloc(sizeof(MyStruct));       p->data; //一般结构体变量用.       MyStruct myStruct;       myStruct.data;


 3.    Include的时候 “”和<>的区别

 #include<>直接从编译器自带的函数库中寻找文件(编译器类库路径)

#include""是先从自定义的文件中找(程序目录相对路径中的头文件),如果找不到在从函数库中寻找文件

 如果是自己写的头文件 建议使用#include“”

 

4.    int *p = NULL; p+1和p++的区别


0 0
原创粉丝点击