标签:指针 指针类型 ... catch 取出 一个 引用 处理 main
编写代码分别更改指针的值以及指针所指对象的值
#include <iostream> int main() { int i = 5, j = 10; int *p = &i; p = &j; *p = 15; j = 20; }
说明指针和引用的主要区别
请解释下述定义。在这些定义中有非法的吗?如果有,为什么?
int i = 0; (a)double* dp = &i; (b)int *ip = i; (c)int *p = &i;
a是非法的,dp是一个double指针,而i是一个int变量,类型不匹配。
b是非法的,不能直接把int变量赋给int指针,正确的做法是通过地址运算&i得到变量i在内存中的地址,然后再将该地址赋给指针。
请叙述下面这段代码的作用
int i=42; int *p1=&i; *p1=*p1 * *p1;
定义一个整型变量i并设置初始值为42,接着定义一个整型指针p1,令其指向变量i,最后取出p1所指的当前值,计算平方后重新赋值给p1所指的变量i。
假设p是一个int型指针,请说明下述代码的含义
if(p) //... if(*p)//...
如果指针指向一个真实存在的变量,则其值必不为0,此时为真。如果指针没有指向任何对象或者是无效指针,则对p的使用将引用将引发不可预计的结果。
如果该int值为0,则条件为假,否则条件为真。
给定指针p,你能知道它是否指向了一个合法的对象吗?如果能,叙述判断的思路;如果不能,也说明原因
只需要把p作为if的语句的条件即可,如果p的值是nullptr,则条件为假,反之为真。
一般处理的办法是将if(p)置于try结构中,当程序块顺利执行时,表示p指向了合法的对象,当程序块出错跳转到catch语句时,表示p没有指向合法的对象。
下面这段代码中为什么p合法而lp非法?
int i=42; void *p=&i; long *lp=&i;
void* 是一种特殊的指针类型,可用于存放任意对象的地址。
lp是一个长整型指针,而i只是一个普通整型数,两者的类型不匹配。
标签:指针 指针类型 ... catch 取出 一个 引用 处理 main
原文地址:https://www.cnblogs.com/suomeimei/p/10434522.html