cpp 指针入门求指教

2015-11-03 00:43:42 +08:00
 6god

void function(void params) { //params 这个是指针把。。
int pointer; //肯定是指针
pointer = (int
) params; //指针=指针?
int total = *pointer; //最迷茫的一点, 把指针赋值给一个 int 类型?

请问下。。。这里面 哪些是指针 哪些不是呢?
1863 次点击
所在节点    问与答
8 条回复
Hello1995
2015-11-03 00:58:05 +08:00
```
void * function(void * params) { //params 这个是指针
int * pointer; //肯定是指针
pointer = (int*) params; //指针,强制类型转换
int total = *pointer; // total 不是指针,是一个整型的数据,*pointer 的意思是,取出指针 pointer 指向的值。
```
supman
2015-11-03 01:04:15 +08:00
@Hello1995 第三个 强制类型转换? 指针 转换成指针?
skydiver
2015-11-03 02:50:02 +08:00
帖子里怎么星号都没了
canautumn
2015-11-03 03:35:16 +08:00
一楼正解…星号给解析成 markdown 里的斜体了。
judyApple
2015-11-03 05:44:10 +08:00
请问 void* params 是什么?是函数指针?函数后面不是有括号么?比如 void(*params)(int);
alloyapple
2015-11-03 08:40:02 +08:00
@judyApple void* params 是一个指针,不知道类型的指针,你可以把它强制转换成任何类型的指针。推荐再看看 cpp 里面的 static_cast, const_cast, dynamic_cast, reinterpret_cast 。
yuriko
2015-11-03 08:47:28 +08:00
所有(绝大多数)数据都是放内存上的,系统给内存的每一行标号来进行存取,指针就是这个标号,所以本质上还是值数据,因此本质上和一般数据并没多大区别。
代码语言将两者进行语义区分,目的是为了进行一些简易操作(比如带类型的指针+1 的时候会直接移动类型长度)和规避一些混用错误(然而还是错误爆炸),才有了指针
Hello1995
2015-11-03 10:54:02 +08:00
@supman void 指针强制转化为 int 指针
@skydiver Markdown 语法: *斜体* 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/233105

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX