原文:
Q2:
main()
{
char *src="hello,world";
char *dest = NULL;
int len=strlen(src);
dest = (char*)malloc(len);
char *d = dest;
char *s = src[len];//它出题意图是指向最后,然后再减减到开始处,但是C语言是不能这样直接指向的,必须这样: s = src+len-1; 而且两边的类型也不等,一边是指针,一边是一个数值,写对: char *s = &src[len];
while(len-- != 0)
{
d++ = s--;
printf("%s",dest);
}
}
改错:{
char *src="hello,world";
char *dest = NULL;
int len=strlen(src);
dest = (char*)malloc(len);
char *d = dest;
char *s = src[len];//它出题意图是指向最后,然后再减减到开始处,但是C语言是不能这样直接指向的,必须这样: s = src+len-1; 而且两边的类型也不等,一边是指针,一边是一个数值,写对: char *s = &src[len];
while(len-- != 0)
{
d++ = s--;
printf("%s",dest);
}
}
#include <stdio.h>
#include <string.h>
int main()
{
char *src="hello,world";
char *dest = NULL;
int len=strlen(src);
printf("src =[%s]\n", src);
dest = (char*)malloc(len+1);
char *d = dest;
char *s = NULL;
int i =0;
s = src+len-1;
//s = &src[len]-1; //这个操作就是对内存指针很了解的情况下进行的:取到地址,然后减少一个char类型地址的偏移量。
//s = &src[len-1]; //直接取到不是\0的前一个字符地址。
while (len-- != 0)
{
*d++ = *s--;
}
*d = 0;
printf("dest=[%s]\n",dest);
return 0;
}
#include <string.h>
int main()
{
char *src="hello,world";
char *dest = NULL;
int len=strlen(src);
printf("src =[%s]\n", src);
dest = (char*)malloc(len+1);
char *d = dest;
char *s = NULL;
int i =0;
s = src+len-1;
//s = &src[len]-1; //这个操作就是对内存指针很了解的情况下进行的:取到地址,然后减少一个char类型地址的偏移量。
//s = &src[len-1]; //直接取到不是\0的前一个字符地址。
while (len-- != 0)
{
*d++ = *s--;
}
*d = 0;
printf("dest=[%s]\n",dest);
return 0;
}
Q2:
char str[] = "I love sina china";
char *p;
p=str;
printf("%c",*p);//是把这个地址的内容给取出来,传的是一个地址指向的内容!
printf("%s",p+2);//把这个首地址的内容取出来,然后加二个地址偏移,然后打印出这个地址以及后面的内容,这儿传入的是一个地址!
char *p;
p=str;
printf("%c",*p);//是把这个地址的内容给取出来,传的是一个地址指向的内容!
printf("%s",p+2);//把这个首地址的内容取出来,然后加二个地址偏移,然后打印出这个地址以及后面的内容,这儿传入的是一个地址!
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/1883/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2009-8-3 11:49
评论列表