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