字符串指针和字符指针有什么区别


答案是 指向类型为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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

转载请注明原文地址:http://juke.outofmemory.cn/read/3789201.html

最新回复(0)