C语言中的几个容易混淆的知识点总结
2014-01-15 16:45
246 查看
1、指针数组与数组指针
(1)int* q[10]; 指针数组,声明一个指向含有10个整型指针元素的数组。
(2)int (*p)[10]; 数组指针,声明一个指向10个整型数组的指针。
指针数组是元素为指针的数组,而数组指针是元素为指向数组的指针。
2、函数指针与指针函数
(1)int (*p)max(int a,int b); 函数指针,p为指向参数类型为int,int,返回值为int的函数,可以将该类型的函数作为首地址赋值给p。
(2)int * max(int a,int b); 指针函数,返回值为指针类型的函数被称作指针函数。
3、用字符串常量初始化指针与数组
(1)char *p= “gooseberry”; 字符指针,初始化指针时所创建的字符串常量被定义为只读,如果试图通过指针修改这个字符串值,程序会出现未定义的行为。
(2) char a[] = “gooseberry”;字符数组,与指针相反,由字符串常量初始化的数组是可以修改的。比如下面的语句:
strncpy(a,"black",5);将数组的值改为blackberry。
4、常量指针与指针常量
(1)常量指针:指向常量的指针,指针所指向地址的内容是不可被修改的。
const int *pi=&a;或者int const *pi, *pi是常量,不能将*p作为左值进行操作。
(2)指针常量:不可修改地址的指针,但是可以对其指向的地址的内容进行修改。还有,指针常量在定义时必须同时赋值,指针常量也不能释放。
定义" int *const pi=&a;",pi是常量,不能作为左值进行操作,但是允许修改间接访问值,即*pi可以被修改。
(1)int* q[10]; 指针数组,声明一个指向含有10个整型指针元素的数组。
(2)int (*p)[10]; 数组指针,声明一个指向10个整型数组的指针。
指针数组是元素为指针的数组,而数组指针是元素为指向数组的指针。
2、函数指针与指针函数
(1)int (*p)max(int a,int b); 函数指针,p为指向参数类型为int,int,返回值为int的函数,可以将该类型的函数作为首地址赋值给p。
(2)int * max(int a,int b); 指针函数,返回值为指针类型的函数被称作指针函数。
3、用字符串常量初始化指针与数组
(1)char *p= “gooseberry”; 字符指针,初始化指针时所创建的字符串常量被定义为只读,如果试图通过指针修改这个字符串值,程序会出现未定义的行为。
(2) char a[] = “gooseberry”;字符数组,与指针相反,由字符串常量初始化的数组是可以修改的。比如下面的语句:
strncpy(a,"black",5);将数组的值改为blackberry。
4、常量指针与指针常量
(1)常量指针:指向常量的指针,指针所指向地址的内容是不可被修改的。
const int *pi=&a;或者int const *pi, *pi是常量,不能将*p作为左值进行操作。
(2)指针常量:不可修改地址的指针,但是可以对其指向的地址的内容进行修改。还有,指针常量在定义时必须同时赋值,指针常量也不能释放。
定义" int *const pi=&a;",pi是常量,不能作为左值进行操作,但是允许修改间接访问值,即*pi可以被修改。
相关文章推荐
- C语言中的几个容易混淆的知识点总结
- C语言编程容易混淆的几个问题总结
- C语言几个容易混淆概念总结
- java知识容易混淆的知识点总结
- [c语言基础回顾]操作符和表达式中一些极其容易混淆的知识点
- OC中一些容易混淆和忘记的知识点总结
- Oracle数据库中的几个容易混淆的概念总结(根据网络资源总结)
- JAVA学习中容易混淆的几个知识点
- java知识容易混淆的知识点总结
- javascript中几个容易混淆的概念总结
- C语言中容易混淆的几个概念
- 黑马程序员_C语言类型方面初学者容易忽视的几个知识点
- 介绍几个XML数据库中容易混淆的概念
- C语言要注意的几个小知识点
- 关于IO流操作中的一些容易混淆的知识点
- 总结几个C语言中的“坑”(一)
- C语言容易混淆的问题
- UI学习总结--几个比较重要的知识点
- 一边走路一边学习 关于struct和class的区别等几个知识点总结
- Java初学者容易混淆的几个问题