char指针指向字符串(char* p到底是指向一个字符的地址还是指向一个字符串或字符数组的地址)

本文目录
- char* p到底是指向一个字符的地址还是指向一个字符串或字符数组的地址
- char *能指向字符吗
- 字符型指针用char*来定义,它不仅可以指向一个字符型常量,还可以指向一个字符串
- 为什么字符指针指向字符串的时候,输出时不需要再指针前加*号呢
- 设有定义 char*c;以下选项中能够使字符型指针c正确指向一个字符串的是
- 设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是( )
- 字符指针是不是指向字符串的指针
char* p到底是指向一个字符的地址还是指向一个字符串或字符数组的地址
p和q都是指向“迹棚字符”的指针。对于p,指向了ch,就是其中存放了ch的地址;对于q,它指向了h,里面存放了字符串"hello"的第一个字符的地址。char *q这种声明只能指向一个字符,不可能指向一个字符串,这可以用printf("%c",*p);试验,其中肯定是h。而指向字符串的指针是形如char (*)的指针。那么类似printf("%s",q);的语句为何能输出hello这样的字符串呢?这不是指针q的问题,而是printf("%s",q);中控制符%s在发挥作用,它的解释是“从q指向的那个字符开始,一个接一个地把字符打印到屏幕上,直到碰到’\0’为止,且不输出’\0’“。这个乱大很好验证,现在把q赋给p,即写一句p=q;,那么printf("%s",p);照样能输出hello。如果两个指针的性质不一样(一个字符指针,一个是字符串指针),则是不允许赋值的。指针的概念是很清楚的,指针的弊端并没有造成其概哗州竖念的混乱……
char *能指向字符吗
char*是指向字符的指针,因为char只能接收和输出一个字符,而且定义不应该char c;char* p = c;
而是char c;char* p = &c因为指针指向的是地址而不是数值
字符型指针用char*来定义,它不仅可以指向一个字符型常量,还可以指向一个字符串
char * const p,这个const是修饰p的,表明p是个只读的指针。p指向字符轿历销串,并没要求一定是字符串常量。
此外,
如果是const char * p,那么const 是修饰p所指向的内容,表烂卜明p指向的内容是只读的,(注意只读与常量的区别),此时并也不能说p指向字符串常量。
如果是const char * const p;那么不仅p指向的内容是只读的,p本身也是只读的闭游。
为什么字符指针指向字符串的时候,输出时不需要再指针前加*号呢
因为char *str这个定义了一个类型为char *的字符型指针str ,而str指向了 I LOVE CHINA!中的第一个字符I。
cout流里面有一个循环就是输出str指向的字符串,其中把str赋给了temp指针,作为移位用,从而一个个输出出来。
而*str是一个字符了就是I ,*是解引用 就是读出str指向的字符 ,所以*str就是I了 这个是不能赋值和移位的 所以空桐输出不出来。
扩展资料:
关于指向字符串的指针
1、用字符旦掘数组存放一个字符串
char string="Linux C";
printf("%s\n",string);
string是一个字符数组名,它同时也是该字符数组的首地址。
2、用字符串指针来指向字符串模亏核
如果不想定义字符数组,就可以只用一个指向字符串的指针,叫“字符串指针”,例如:
char *p="Linux C";
printf("%s\n",p);
“Linux C”是一个字符串常量。C语言对于字符串常量的处理方法:在内存中开辟一个字符数组来存储该字符串常量,并把开辟出的字符数组的首地址赋给p。
设有定义 char*c;以下选项中能够使字符型指针c正确指向一个字符串的是
char *c 这只是定义了一个字符指针.没有明确的指向,需要通过具体赋值才行.
B项scanf("%s",c);错:因为C没有确切的指向,它的值不确定.%s是输出字符串时使用的。而现在的C是指针变量,而且没有指向。
D项*c="string" *C是一个实际的值,你又把字符串"string"赋给了*C,这样是值=值了,谈不上什么赋值。只有字符数组才能存放字符串,而且这样赋值方式也不对的,因此是错误的。
设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是( )
【答案】:A
在题目的题干中定义了字符指针变量c,在选项A)中,首先定义字符数组s订,然后再把字符数组str的首地址赋给字符指针变量c。所以选项A)是正确的。在选项B)中,应改成scanf(”%s”,&c);在选项c)中,getchar函数的返回值是用户输入的第一个字符的ASCIl码,如出错返回.l,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。即c只能指向一个字符而不能指向字符串。在选项D)中,strepy函数只是将sla"字符串中的内容赋给c,并没有使其指向str,所以选项D)是错误的。
字符指针是不是指向字符串的指针
答案是 指向类型为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"的首地址!

更多文章:
跷二郎腿太低好吗?想要通过贴墙站改正二郎腿影响的话,有哪些要点需要注意
2026年10月11日 05:10
易语言点击js按钮(易语言网页填表怎样点击链接为“javascript:void(0)“的按钮)
2026年10月11日 03:00
compare with造句(用compared with和compared to造句)
2026年10月10日 23:30
tensorflow与keras对应版本(为什么tensorflow2.8没有keras)
2026年10月10日 22:10
maven仓库jar网站(如何在maven仓库中添加jar包)
2026年10月10日 19:50





