今天 用指针的时候 遇到一个小问题
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int cmp(const void *a,const void *b)
{
return strcmp((char *)a,(char *)b);
}
int main()
{
int i;
char str[4][5];
char **temp;
strcpy(str[0],"dbc");strcpy(str[1],"cbc");strcpy(str[2],"bbc");strcpy(str[3],"abc");
//temp = (char **)str;
// i = 4;
for(i =0 ; i < 4; i ++)
{
printf("%d:%s\t",str[i],str[i]);
}
printf("\n");
for(temp = (char **)str,i =0 ; i < 4; i ++)
{
printf("%d:%s\t",temp,temp);
temp++;//这里++ 是会错误的 他没有加 5个单位 只是加了四个
/*
1245032:dbc 1245037:cbc 1245042:bbc 1245047:abc
1245032:dbc 1245036:蘡bc 1245040: 1245044:c
*/
}
qsort(str,4,sizeof(char)*5,cmp);
printf("排序后\n");
for(i =0 ; i < 4; i ++)
{
printf("%d:%s\t",str[i],str[i]);
}
return 0;
}
但是 我将 改成这个 strcpy(str[0],"bc");strcpy(str[1],"bc");strcpy(str[2],"bc");strcpy(str[3],"bc");
也还是加 4 sizeof(char **) = 4;
无论什么指针都是 占四个字节 。
posted on 2010-07-03 23:41
付翔 阅读(149)
评论(0) 编辑 收藏 引用 所属分类:
linux 及 c相关