我正在阅读的教科书解释说,指针是保存另一个变量起始地址的变量,而且它们是用指向的数据类型定义的。为什么你可以指定一个指针作为变量的地址呢?或者,如果省略“&”,而不是地址,如果这是指针的定义方式,它是否总是保存地址?C:指针=变量和指针=变量有什么区别?
-6
A
回答
0
ptr
是实际的指针,而*ptr
是无论它指向什么,所以*ptr=&var
没有任何意义,除非它是一个指针的指针。它要么是ptr=&var
要么是*ptr=var
如果你真的想给一个指针指定一个变量,那么可以通过强制转换。这编译,但我看不出有什么好理由做这样的事情:
#include <stdio.h>
main()
{
int var=4;
int *ptr;
ptr = (int *)var;
printf("%d\n", *ptr);
}
行为是未定义的。当我跑它时,它隔断了。
0
C是很久以前设计的,一些设计选择是在不再流行的情况下进行的。当函数原型是可选的,并且模糊性不能从上下文中解析出来时,运算符的地址需要将对象的地址而不是其值传递给函数。为了一致性,使用相同的语法进行赋值。
然而要注意你提出的语法简化,可以不再区分这些情况:
void *p;
void *q = &p; // make q point to the pointer p
void *q = p; // set q to the value of p
还有其他潜在的语法简化:
的
.
和->
运营商为对象,指针引用可以合并成一个运营商。的
*
语法间接函数调用:(*fun)()
是reduncdant作为fun()
是完全等价的。(请注意,您可以编写(****fun)()
太)
相关问题
- 1. 参考变量和常量指针变量有什么区别?
- 2. 常量指针和整型常量指针有什么区别?
- 3. 使用结构指针和结构变量有什么区别?
- 4. c#变量指针
- 5. 指针变量
- 6. 指向指针的指针与C中指针的地址有什么区别?
- 7. 正常指针和常量指针在c中的区别
- 8. 指针VS变量,Objective-C
- 9. 指针变量的值C
- 10. C++成员变量指针
- 11. C指针Matlab的变量
- 12. 指针,动态变量,C++
- 13. ROM变量指针指向RAM变量?
- 14. C中指针和变量之间的区别?
- 15. 指针或变量?
- 16. 指向变量的指针
- 17. 指针或全局变量的指针?
- 18. Boost智能指针和std智能指针有什么区别?
- 19. 泛型指针和void指针有什么区别?
- 20. 为什么不使用指针变量
- 21. 单个变量和数组的动态指针分配有什么区别?
- 22. C++矢量指针指针
- 23. C++指针和变量范围
- 24. C指针和临时变量
- 25. C#指针和值类型变量
- 26. C中的指针和变量
- 27. 更改常量变量的指针C++
- 28. 什么区别=指针
- 29. C指针,指向全局变量:不同的指针
- 30. 为什么指向变量的指针保持有效?
为什么要使用C++标记为一个C的问题? – 2017-07-02 15:44:58
我以为这两个使用非常相似的语法,并建议。 :/ – Pixel
您需要阅读[好书](https://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list) –