读书人

几个指针的有关问题求解答

发布时间: 2014-04-26 16:22:39 作者: rapoo

几个指针的问题,求解答啊
1.若有以下定义,则对a数组元素的正确引用是_________.
int a[5],*p=a;
a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)

这个引用是什么意思啊??

------------------------------------------------
2.有以下定义
char a[10],*b=a;
不能给数组a输入字符串的语句是()
A)gets(a) B)gets(a[0]) C)gets(&a[0]); D)gets(b);

----------------------------------------------
3.设已有定义: char *st="how are you"; 下列程序段中正确的是()
A) char a[11], *p; strcpy(p=a+1,&st[4]);
B) char a[11]; strcpy(++a, st);
C) char a[11]; strcpy(a, st);
D) char a[], *p; strcpy(p=&a[1],st+2);

a选项里,&st[4]不是地址吗?也能用strcpy吗?

-------------------------------------------

4.以下正确的程序段是_________.
a)char str[20]; b)char *p;
scanf("%s",&str); scanf("%s",p);
c)char str[20]; d)char str[20],*p=str;
scanf("%s",&str[2]); scanf("%s",p[2]);
答案说选c,但是如果c能行,为什么a不行啊?

求解啊。

[解决办法]
1.若有以下定义,则对a数组元素的正确引用是_________.
int a[5],*p=a;
a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)

这个引用是什么意思啊??

a.越界 b.还是个指针 c.越界 所以答案是d

------------------------------------------------
2.有以下定义
char a[10],*b=a;
不能给数组a输入字符串的语句是()
A)gets(a) B)gets(a[0]) C)gets(&a[0]); D)gets(b);

gets函数参数类型是char*指针

----------------------------------------------
3.设已有定义: char *st="how are you"; 下列程序段中正确的是()
A) char a[11], *p; strcpy(p=a+1,&st[4]);
B) char a[11]; strcpy(++a, st);
C) char a[11]; strcpy(a, st);
D) char a[], *p; strcpy(p=&a[1],st+2);

a选项里,&st[4]不是地址吗?也能用strcpy吗?

char *strcpy( char *to, const char *from );
b.函数使用正确,但是数组a内存不够,出现越界。
c.同上
d.数组a没有分配内存。。。。
只有答案A正确


-------------------------------------------

4.以下正确的程序段是_________.
a)char str[20]; b)char *p;
scanf("%s",&str); scanf("%s",p);
c)char str[20]; d)char str[20],*p=str;
scanf("%s",&str[2]); scanf("%s",p[2]);
答案说选c,但是如果c能行,为什么a不行啊?

int scanf( const char *format, ... );
按照标准的话答案是c
但是a也没错

读书人网 >C++

热点推荐