**引言:**
要想真正掌握C语言,掌握指针时必须的,可以说指针是C语言的灵魂。**
指针变量一定要先进行初始化,然后才能使用。初始化指要对指针变量进行赋值,将一个地址值赋值给指针变量。极为常犯的错误是:
**int *a;**
***a = 12; /*未对它进行初始化,没有办法预测12这个值将存储于什么地方*/**
**分析几个指针的例子:**
1、*d = 10 - *d; 两个间接访问操作。右边的间接访问作为右值使用,所以它的值是d所指向的位置所存储的值(a的值)。左边的简介访问作为左值使用,所以d所指向的位置(a)把赋值符右侧的表达式的计算结果作为它的新值。
2、*&a = 2;这条语句的意思是:把值2赋值给变量a。这条语句在功能上与a=2是相同的。但是,它涉及更多的操作。除非编译器知道你在干什么并丢弃额外的操作,否则它所产生的目标代码将会更大、更慢。
3、int a = 12; int *b = &a; int **c = &b;指针变量和其他变量一样,占据内存中某个特定的位置,所以用&操作符取得它的地址是合法的。
值的类型并非值本身所固有的一种特性,而是取决于它的使用方式。比如在算数运算中,char型值可以被强制转换为int型的值。一个变量的值就是分配给这个变量的内存位置所存储的数值。通过一个指针访问它所指向的地址的过程称为简介访问。用于执行简介访问的操作符是单目操作符*。
- 前言
- (四)回调函数
- (一)while(1)死循环与for(;;)死循环的区别
- (二)static关键字
- (三)函数
- (四)可变参数函数
- (五)setjmp和longjmp
- (六)指针
- (七)回调函数
- (八)字符串
- (九)动态内存分配
- (十)结构体
- (十一)深入理解指针
- (十二)命令行参数
- (十三)printf、fprintf、sprintf和snprintf函数
- (十四)const关键字详解
- (十五)字符串输入函数fgets、gets和scanf
- (十六)字符串输出函数puts、fputs和printf
- (十七)字符/字符串输出函数fputc、fputs、putc、putchar和puts
- (十八)字符/字符串输入函数fgetc、fgets、getc、getchar和gets
- (十九)restrict关键词
- (二十)scanf函数详解
- (二一)内联函数
- (二二)位操作
- (二三)errno变量
- (二四)内存分配