答案是 指向类型为unsigned char的指针变量叫字符指针
例如:
unsigned char ch = 'a';
unsigned char ch_p = &ch;
那么指针变量ch_p就是字符指针
另外指向char类型的指针变量有部分也可以是字符指针, 因为char类型的范围是
-128 ~ 127, 而字符对应的ASCII码值范围是 0~255, 故从-128 ~ -1不可以表示字符!
而字符串指针则是指向字符串首地址的指针变量, 由于是字符串,所以指向的类型为char,例如:
char str = "hello world";
那么指针变量str就是个字符串指针变量, 它指向了字符串常量"hello world"的首地址!
首先是调试了的程序如下!当你把++p去掉之后就会输出Morning的
因为++p的意思它的指针位置向下移动了一个单位,也就是指在了a[1],所以是第二个字符串的位置了!或者是指针数组里的第二个指针!
#include <stdioh>
void fun(char p)
{++p;printf("%s\n",p);}
void main()
{char a[]={"Morning","Afternonn","night"};
fun(a);
}
char p; 这是一个指向字符指针的变量!如果是这样 p你知道是指向字符的指针,那么它存的是所指向字符变量的地址!比如char p=str,那么p存的就是str的地址!所以char s,q=&s,p=&q;这样就明白了吧, p存的是字符指针的地址!
直接用str的错误在哪?看你怎么用,如果直接替换的话,主要是增加了程序的复杂度,不易读,这样简单点!不然还有来会的把空格后面的字符移动到前面,但是并不是不可以!!!还有考虑指针的来回移动问题
弄好了!希望多给点分!
#include <stdioh>
void fun(char str)
{
int i=0,t,j=0;
while (str!='\0')
{ i++;
str++;
}
str='\0';
j=i;
while(i)
{--str;
i--;
}
for(i=0;i<j;i++)
{
if(str[i]==' ')
{t=i;
for(t;t<j;t++)
str[t]=str[t+1];
i--;
}
}
printf("%s\n",str);
}
void main()
{char s,str[10]={"nih aome"};
s=str;
fun(s);
} 这样也是可以啊!!!就是太麻烦了!!!
首先,sizeof(x)是求的x在内存中所占的大小,"hello"这个字符串本身只占4个,用sizeof(&str2)可以得出都是4,4。由此可以推出字符指针指向的是字符串的实际所占空间的大小,故为4。
以上就是关于字符串指针和字符指针有什么区别全部的内容,包括:字符串指针和字符指针有什么区别、字符指针问题 [续]、为什么字符指针长度为4等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!