关于c语言中指针与字符串的一个问题

代码如下
char *str = "This is a string";
printf("%s",str);
输出为”This is a string“,按我的理解,str是一个指向字符串的指针变量,值不就是那个字符串的地址吗?为什么输出时不加*号直接就输出字符串?

这是因为printf语句中使用%s输出时,需要提供一个指向字符串开始位置的指针,你给出的str变量存储了这个指针
如果你要用%c输出这个str指向的那个字符,就需要用*str了,因为str是定义成char *类型的,这个指针指向的数据的类型是字符型的追问

谢谢,我没好好看书,c语言定义字符串原来就两种方法

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-05-17
输出的是什么,不单单由str或者*str决定,还由前面的格式指示 配合的。

printf("%s",str);第1参数%s指示输出一个字符串,第二参数str指示这个字符串的地址,很自然啊。

你说的如果改成printf("%s",*str);,这是错误的编码,会崩溃,因为字符串的地址被设为了'T'即0x54。你想输出*str,应该写成printf("%c",*str);这样就输出大写T一个字符。

关于字符串和指针的问题
D。C语言不支持在声明多个变量的同时,在一个句子中连续用=来初始化的这种形式。24。B A错。“ABCDE”加上隐藏的结束符,需要char s[6]才能放得下 C错。s指向的是常量字符串,不能赋值 D错。s未初始化,指向的是未知空间 27。C A错。s是数组,p是指针,虽然在使用上没差别,但毕竟是两个...

关于c语言中指针操作字符串和指针取值的问题
应该写为printf("%s\\n",(buf+1)); 或者 printf("%c\\n",*(buf+1)); (输出是e)问题二和一应该是同样的错误 printf("%s\\n",p);是打印整个字符串'test'如果你只打印一个字符,比如s printf("%c\\n",*(p+2));

一个C语言中指针型字符数组的问题
char *p=“AAA”; \/\/初始化一个指向字符串的指针(指向字符串其实是指向字符串的第一个字符)注意,上面说的是指向字符串常量!p[0]='B'; \/\/不允许 这会导致内存访问错误。原因在于编译器可能选择内存中的同一个单个的拷贝,来表示所有相同的字符串文字。给你举个例子:char message1[] = ...

关于C语言的字符串指针的问题?
如果输入12345,那么p指向1,即p中存放着1的地址。没有字符串的指针和指针指向的内容不能修改一说。无论什么类型的指针,只要是“常指针”就有三种情况不可改变:指针是常量——这个指针只能指向申明时指向的目标,不能指向别处。指向的内容是常量——不能通过这个指针改变指向的内容,但指针可以指向别处...

C语言字符指针问题
举一个不是很严谨的例子。假设系统给hello的存储地址是从1开始的。那么h的存储地址是1,e的存储地址是2,以此类推。指针p指向的地址,其实是h的存储地址1。所以你用字符串输出时,用的是指针p。而*p代表的是1这个存储地址保存的值。那就是h。所以,你输出时,只能用字符输出:%c。(p+1)则代表2...

C语言中字符指针的问题 char *pointer = "Hello World!"; printf...
回答:这里的 pointer 指向的是一个字符串,字符串的首地址赋给 pointer printf("%s\\n",pointer); \/\/输出Hello World!\/\/ printf 遇到指向字符串的指 \/\/针时,输出字符串(就是这样定义的) printf("%s\\n",*pointer); \/\/输出H printf("%d\\n",pointer); \/\/输出pointer指向的地址

关于c语言指针 字符串 选择题不会 求答案
选择答案B。

关于C语言字符串数组和字符指针相互赋值问题
;是指针数组,存储了56个char *型指针,而你这样儿fileArray[i] = filename;进行赋值是指针赋值,故fileArray中的每个元素都会指向"C:\\\\RequestData"所在的地址,这也是fileArray[0]--fileArray[55]的值全部是C:\\RequestData的原因 这个程序需要修改的地方多着,看看指针及字符串操作方面的资料吧!

c++字符指针与字符串的问题
简单回答一下你的各个问题,"abcd"是一个字符串,在内存中肯定有自己的地址空间,char *a = "abcd"就是把这个地址空间赋给a保存的。"abcd"本身就是一个地址,因为在c语言中字符串就是对应于一个指针。int b=5; *a = &b的这个,&b得到的是一个int*,是一个int型的指针,然后还要赋值给*a...

C语言char指针,char数组,以及字符串的一些理解。
探讨C语言中的char数组与char指针,以及字符串的理解。首先,理解char数组的定义形式,其长度必须为常量,声明后会开辟相应大小的空间用于存储数据。接着,介绍char指针的定义,定义形式为一个地址,但此时并未指向任何存储空间。为了访问数据,需要通过声明静态或动态数组来开辟空间,让指针指向该空间。在使用...

相似回答