NO.3 指针相关
Q:经过下列语句:int j,a,*p;定义后,下列语句中合法的是
A.p=p+2;
B.p=a;
C.p=a+2;
D.p=&(j+2);
A.
#include <stdio.h>
#include <math.h>
int main()
{
int a,*p;
printf("a=%d\n", a);//
printf("a=%d\n",a);//
printf("a=%d\n", a);//
printf("p=%d\n", p); //
printf("*p=%d\n", *p); //
p=p+2;
printf("a=%d\n", a);//
printf("a=%d\n",a);//
printf("a=%d\n", a);//
printf("p=%d\n", p); //
printf("*p=%d\n", *p); //
return 0;
}
为什么运行结果只有4行?
a=6487536
a=1
a=1
p=1
B.
p=a;
invalid conversion from 'int' to 'int*' [-fpermissive]
[错误]从“int”到“int*”的转换无效[-fpermissive]
C.
p=a+2;
invalid conversion from 'int' to 'int*' [-fpermissive]
D. p=&(j+2);
lvalue required as unary '&' operand
[错误]左值需要作为一元'&'操作数
本帖最后由 梦回连营 于 2022-3-12 20:12 编辑
我试了一下好像是只有 A 是合法的,p 是一个指向 int 的指针,一个 int 需要的 4 位进行存储, p = p + 2 之后 p 指向的地址会后移 8 位,虽然没有给 p 初始化,但是它还是指向了一个地址。 梦回连营 发表于 2022-3-12 20:10
我试了一下好像是只有 A 是合法的,p 是一个指向 int 的指针,一个 int 需要的 4 位进行存储, p = p + 2...
嗯,是只有A能运行,其他的直接不符规定,但我A运行也有问题QAQ
页:
[1]