指针小解
2016-07-13 17:31
357 查看
指针真的是很难对付的一个姑娘,事太多,又太绕。想起来师傅当时说的C语言学不好指针就等于白学了,觉得还是蛮有道理的。 1.
int *pa // pa是一个指针变量,它指的是一个整形变量;同理扩展。
2. int a=0,b=1; int *pa,*pb; //指针并没有指向任何一个整型和字符型,所以理解成赋值为NULL(在stido.h中定义的零值的宏) printf("a is %d,&a is %p,pa is %p\n",a,&a); printf("b is %d,&b is %p,pb is %p\n",b,&b); 运行结果:pa is 000000 3.
int a=0,b=1; char c='A'; int *pa,*pb; char *pc; pa=&a; pb=&b; pc=&c; printf("a is %d,&a is %p,pa is %p,&pa is %p\n",a,&a,pa,&pa); printf("b is %d,&b is %p,pb is %p,&pb is %p\n",b,&b,pb,&pb); printf("c is %c,&c is %p,pc is %p,&pc is %p\n",c,&c,pc,&pc); return 0; //指向某变量的指针变量,虽然指针变量中存放的是变量的地址,二者在数值上相等,但是在概念上变量的指针并不等同于变量的地址。
4.
指向某变量的指针变量,通常简称为某变量的指针,虽然指针变量中存放的是变量的地址值,二者在数值上相等,但在概念上变量的指针并不等同于变量的地址。变量的地址是一个常量,不能对其进行赋值。而变量的指针则是一个变量,其值是可变的。
5. 间接寻址运算符: int a=0,b=1; char c='A'; int *pa=&a,*pb=&b; char *pc=&c; *pa=9; //修改指针变量pa所指向的变量的值 printf("a is %d,&a is %p,pa is %p,*pa is %d\n",a,&a,pa,*pa); printf("b is %d,&b is %p,pb is %p,*pb is %d\n",b,&b,pb,*pb); printf("c is %c,&c is %p,pc is %p,*pc is %c\n",c,&c,pc,*pc); // *作为间接引用运算符,用于读取并显示指针变量中存储的内存地址所对应的变量的值,即指针变量所指向的变量的值,这两个用法之间其实并无关系。 6. (1)永远清楚每个指针指向了哪里,指针必须指向一块有意义的内存; (2)永远清楚每一个指针指向的对象的内容是什么; (3)永远不要使用未初始化的指针变量;
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言判断一个数是否是2的幂次方或4的幂次方
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- C语言实现选择排序、冒泡排序和快速排序的代码示例