一个关于指针间赋值及间接求值的问题
2012-02-08 08:45
555 查看
1 #include<stdio.h> 2 void main() 3 { 4 int i = 1; 5 float j = 5; 6 int *b = &i; 7 float *a = &j; 8 9 b = (int *)a; 10 printf("*b=%d *a=%f\n", (int) *(float *)b, *a); 11 }
这个程序中,指针b和指针a所指向的地址是相同的,但是如果想通过指针b得到其指向地址单元的内容还要考虑其所指向地址单元内容变量的类型,然后通过相应的转换才能求得。
关于指针之间赋值的问题:
在传统C中,在不同类型的指针之间赋值时,进行转换通常是允许的。在ANSI C中,这种转换是不允许的,除非其中一种类型为void,或者赋值符右边是常量0.因此,我们可以把void *看成是一种通用的指针类型。这是一个非常重要的概念。
声明
int *p;
float *q;
void *v;
合法赋值 非法赋值
p = 0; p = 1;
p = (int *) 1; v = 1;
p = v = q; p = q;
p = (int *) q;
相关文章推荐
- 关于 将一个数组赋值给另外一个数组会重置原来数组的指针 的问题
- 关于二维数组地址和指针之间赋值的问题
- 关于指针的赋值问题
- 关于指针问题的一个笔记加牢骚
- 一个关于指针的问题
- [笔试题 2][c/c++]关于指针直接赋值问题
- 关于一个给二维数组循环赋值问题的本渣研究出的解决办法[C#]
- 一个关于字符指针的奇怪问题!
- 今天碰到的一个问题,关于通过基类对象的引用给子类赋值
- 一个关于二维指针的问题
- 关于指针和const限定符问题的一个简单判断方法
- 关于c中对数组赋值的一个问题
- 关于给指针赋值的问题
- C语言中关于指针,二维数组等的问题,一个有趣的发现
- 前两天困扰我的一个关于指针和内存的问题的总结
- [笔试题 2][c/c++]关于指针直接赋值问题
- 关于C语言指针赋值的问题详解
- 关于指向结构体的指针——又一个指针用法中容易忽略的问题
- 关于C++指针的一个问题
- [笔试题 2][c/c++]关于指针直接赋值问题