今天看书的时候发现有一个矛盾的地方,在指针变量这一章前面刚说完不要讲一个整数赋值给指针变量,不合法,后面举例子的时候立马又说可以了,到底可不可以,还是说如果这个指针变量已经有指向的变量了就可以直接将整数赋给它?
int *p = 100;
是定义一个指向整型的指针并赋初始值100,所以指针值是100,一般不建议这么做,除非你知道这个地址值是有效的。
int a;
int *p = &a;
*p = 100;
这里的*p=100;
是向p指针所指的内存赋值100,即a=100,p的值仍然是a的地址没有变,和前面赋初值不一样的。
书上写错了呗
如果你指针还没有地址,那么给它赋值整数,就是在给一个野指针赋值,那你不知道把内存里什么东西赋值了,搞不好把系统都搞崩溃了(大概率别的内存不会允许你赋值,然后你自己崩溃)
如果你的指针已经指向了自己分配好的内存,那么你给它赋值就是在给内存赋值