C语言指针类题目

来源:百度知道 编辑:UC知道 时间:2024/05/07 06:25:10
以下程序运行输出的结果是什么?(出第三题外) 希望高手尽量写出解答的思路
1: #include<stdio.h>
#include<string.h>
main()
{ char *p="abcdef\Ofghijk\0"; \*前面的大写字母O,后一个是数字0;*\
printf("%d\n",strlen(p)); \*这句的strlen(p)是什么意思*\
}
2:#include<stdio.h>
#include<string.h>
fun(char *w,int n)
{ shar t,*s1,*s2;
s1=w;s2=w+n-1;
while (s1<s2 ) {t=*s1++;*s1=*s2--;*s2=t;}
}
main()
{ char *p;
p="1234567";
fun(p,strlen(p));
puts(p)
}
3: 若有说明:int=2,*p=&n;*q=p; 则以下非法赋值语句是()
A:p=q B: *p=*q C: n=*q D: p=n (希望解释正确选项的意义)
4:#include<stdio.h>
main()
{char ch[2][5]={"6937","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i];

1.
#include<stdio.h>
#include<string.h>
main()
{
char *p="abcdef\Ofghijk\0";// \*前面的大写字母O,后一个是数字0;*\
printf("%d\n",strlen(p)); //\*这句的strlen(p)是什么意思*\
}
运行结果:13
strlen是求字符串长度的

2.
#include<stdio.h>
#include<string.h>
fun(char *w,int n)
{
char t,*s1,*s2;
s1=w;s2=w+n-1;
while (s1<s2 )
{t=*s1++;*s1=*s2--;*s2=t;}
}

main()
{
char *p;
p="1234567";
fun(p,strlen(p));
puts(p);
}

程序有问题,无运行结果

3.D

4.
#include<stdio.h>
main()
{char ch[2][5]={"6937","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>'\0';j+=2)
s=10*s+p[i][j]-'\0';
printf("%d",s);
}