C语言第三周,指针
2016-08-11 19:07
295 查看
一、指针:
指针是一个变量,其值为另一个变量的地址,即,内存的位置的直接地址。就像其他变量一样,必须在使用指针储存其他变量地址之前,对其进行声明。
指针可以简化一些C编程任务的执行,动态内存的分配没有指针的话是无法完成的;所以学好指针是很有必要的。
每一个变量都有一个内存位置,每个内存都可以用&取出地址;
指针的类型有:
指针的数据的值都是实际数据类型,都是一个代表内存地址的十六进制数,不同类型的指针指向的变量或常量的数据类型不一样。
NULL指针:
在声明变量的时候,如果没有确切的地址可以赋值,为指针变量赋一个NULL值是一个良好的编程习惯。赋为NULL值的指针被称为空指针。
在大多数的操作系统上,程序不允许访问地址为0的内存,因为内存是操作系统保留。然而,内存地址0有特别意义,表明指针不指向一个可访问的内存位置。
指针可以用逻辑关系运算符进行运算和比较
指向指针的指针
指向指针的指针是一种多级间接寻址的方式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值得位置。
指针数组中的每一个元素均为指针,即有诸形如“*ptr_array”的指针。
指针数组中的元素亦可以表示为“*(*(ptr_array+i))”。又因为“()”的优先级较“*”高,且“*”是右结合的,因此可以写作**(ptr_array+i)。
由于数组元素均为指针,因此ptr_array是指第i+1个元素的指针。
指针是一个变量,其值为另一个变量的地址,即,内存的位置的直接地址。就像其他变量一样,必须在使用指针储存其他变量地址之前,对其进行声明。
指针可以简化一些C编程任务的执行,动态内存的分配没有指针的话是无法完成的;所以学好指针是很有必要的。
每一个变量都有一个内存位置,每个内存都可以用&取出地址;
#include <stdio.h> int main () { int var1; char var2[10]; printf("var1 变量的地址: %x\n", &var1 ); printf("var2 变量的地址: %x\n", &var2 ); return 0; }
指针的类型有:
int *ip; /* 一个整型的指针 */ double *dp; /* 一个 double 型的指针 */ float *fp; /* 一个浮点型的指针 */ char *ch /* 一个字符型的指针 */
指针的数据的值都是实际数据类型,都是一个代表内存地址的十六进制数,不同类型的指针指向的变量或常量的数据类型不一样。
NULL指针:
在声明变量的时候,如果没有确切的地址可以赋值,为指针变量赋一个NULL值是一个良好的编程习惯。赋为NULL值的指针被称为空指针。
在大多数的操作系统上,程序不允许访问地址为0的内存,因为内存是操作系统保留。然而,内存地址0有特别意义,表明指针不指向一个可访问的内存位置。
指针可以用逻辑关系运算符进行运算和比较
指向指针的指针
指向指针的指针是一种多级间接寻址的方式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值得位置。
指针数组中的每一个元素均为指针,即有诸形如“*ptr_array”的指针。
指针数组中的元素亦可以表示为“*(*(ptr_array+i))”。又因为“()”的优先级较“*”高,且“*”是右结合的,因此可以写作**(ptr_array+i)。
由于数组元素均为指针,因此ptr_array是指第i+1个元素的指针。
相关文章推荐
- golang指针的使用,类似C语言
- 关于c语言字符串中sizeof指针的问题
- C语言指针5分钟教程
- C语言学习笔记(18多级指针)
- c语言中指针悬空
- C语言高频面试题之sizeof与指针和结构体专题总结
- C语言指针的初始化和赋值
- C语言指针学习经验总结
- C语言的那些小秘密之【函数指针】
- C语言的那些小秘密之【指针(四)】
- C语言关于数组与指针内容小结
- C语言 指针4
- c语言 函数指针
- 【C语言】-初涉指针
- C语言指针剖析(1)---基本数据类型
- C语言之const常量(摘自C和指针)
- C语言调用jni中JNIEnv指针使用和理解
- zerglurker的C语言教程004——指针初步讲解
- 深入理解C语言指针的奥秘(yanglilibaobao )
- 黑马程序员_C语言指针的学习