指针的一个问题,求详解
设有定义:inta,*pa=&a;,以下scanf语句中能正确为变量a读入数据的是()。答案:DA、scanf("%d",&pa);B、scanf("%d",*pa);C...
设有定义:int a,*pa=&a;,以下scanf语句中能正确为变量a读入数据的是( )。答案:D
A、scanf("%d",&pa);
B、scanf("%d",*pa);
C、scanf("%d",a);
D、scanf("%d",pa); 展开
A、scanf("%d",&pa);
B、scanf("%d",*pa);
C、scanf("%d",a);
D、scanf("%d",pa); 展开
4个回答
展开全部
int a,*pa=&a; 这是声明。声明里 *pa 是指针。
声明 int 型 变量 a。
声明 int 型 指针 pa, 并初始化 -- 让它指向 变量 a 的地址。
scanf(...) ; 是 语句。
语句里 *pa 是指针 指向的 值。
语句里 pa 是指针 指向的 地址。
语句里 a 是变量a 的 值。
语句里 &a 是变量a 的 存储地址。
语句里 &pa 什么都不是,它有语法错误。
scanf("%d",...); 语句,
小括号里, 第一部分 是 输入 格式描述,%d 是 按10进制整型 格式输入。
小括号里, 第二部分 是 输入数据 进 某地址,要求 添 变量的地址,或指针指向的地址。
A,pa 什么都不是,有语法错误。所以不对。
B,语句里,*pa 是指针 指向的 值,不是 指针指向的地址。所以不对。
C,语句里,a 是变量a 的 值。也不符合 要求。所以不对。
D, 语句里,pa 是指针 指向的 地址, 符合 要求,正确答案 选它。
上面特别强调了 声明 和 语句。这是因为 外貌相似的东西,在声明里 和 在 语句里 意义不同。例如,
声明里 *pa=&a; -- 把a的地址赋给 pa.
语句里要写 pa = &a -- 把a的地址赋给 pa.
语句里要写 *pa = a -- 把a的值赋给 pa.
遇到 char *pa; 则更烦人。
声明 int 型 变量 a。
声明 int 型 指针 pa, 并初始化 -- 让它指向 变量 a 的地址。
scanf(...) ; 是 语句。
语句里 *pa 是指针 指向的 值。
语句里 pa 是指针 指向的 地址。
语句里 a 是变量a 的 值。
语句里 &a 是变量a 的 存储地址。
语句里 &pa 什么都不是,它有语法错误。
scanf("%d",...); 语句,
小括号里, 第一部分 是 输入 格式描述,%d 是 按10进制整型 格式输入。
小括号里, 第二部分 是 输入数据 进 某地址,要求 添 变量的地址,或指针指向的地址。
A,pa 什么都不是,有语法错误。所以不对。
B,语句里,*pa 是指针 指向的 值,不是 指针指向的地址。所以不对。
C,语句里,a 是变量a 的 值。也不符合 要求。所以不对。
D, 语句里,pa 是指针 指向的 地址, 符合 要求,正确答案 选它。
上面特别强调了 声明 和 语句。这是因为 外貌相似的东西,在声明里 和 在 语句里 意义不同。例如,
声明里 *pa=&a; -- 把a的地址赋给 pa.
语句里要写 pa = &a -- 把a的地址赋给 pa.
语句里要写 *pa = a -- 把a的值赋给 pa.
遇到 char *pa; 则更烦人。
展开全部
scanf语句要求在后面提供一个整型数据存储区的地址。
A.&pa错,变量pa存放的是一个地址,地址本身并不是整型数据,输入后的数据当作地址数据存放到变量pa中将会导致pa指向的存储区有可能指向系统内存的错误地址,会给下一步pa的使用造成麻烦;
B.*pa错,*pa就是pa指向存储区(a)的值,这是个整型值而且还未给a赋过值,拿a存放的数据当成一个地址来用这是有问题的,这个指针是“野”指针;
C.a错,这同B的情况相同,a的值就是*pa
D.pa正确,pa正是一个指向整型存储区的指针,而且它已经被赋值指向变量a,输入的整型数据将存放到变量a的存储区中。
A.&pa错,变量pa存放的是一个地址,地址本身并不是整型数据,输入后的数据当作地址数据存放到变量pa中将会导致pa指向的存储区有可能指向系统内存的错误地址,会给下一步pa的使用造成麻烦;
B.*pa错,*pa就是pa指向存储区(a)的值,这是个整型值而且还未给a赋过值,拿a存放的数据当成一个地址来用这是有问题的,这个指针是“野”指针;
C.a错,这同B的情况相同,a的值就是*pa
D.pa正确,pa正是一个指向整型存储区的指针,而且它已经被赋值指向变量a,输入的整型数据将存放到变量a的存储区中。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int a,*pa=&a;这一句可以分解为:
int a;
int *pa;
pa=&a;
在scanf函数获取整数时候,需要一个证书的地址,也就是int *类型的,满足int *类型的只有 &a和pa
故选择D
int a;
int *pa;
pa=&a;
在scanf函数获取整数时候,需要一个证书的地址,也就是int *类型的,满足int *类型的只有 &a和pa
故选择D
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
d
scanf索要输入的是一个变量的地址
那么bc都不对
a选项中要输入a,那么就要a的地址,但是&pa是pa的地址,所以不对
scanf索要输入的是一个变量的地址
那么bc都不对
a选项中要输入a,那么就要a的地址,但是&pa是pa的地址,所以不对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询