C语言如下程序字符串指针不是存储的是字符串的首地址吗,为什么输出是string而不是*string呢

作者&投稿:贺仁 (若有异议请与网页底部的电邮联系)
C语言中字符指针变量输出的值为什么不是地址~

因为这里用的是%s,p是字符串首地址,而字符串是连续存放的,所以会由首地址的内容自动输出到'\0'前一位,如果用*p就会出错,要么改成%c就不会出错,这是规定的。

函数fun中的是printf("%s
", *p),%s就是字符串啊,如果是%c,那就输出A吧。

printf函数里面有 %s ,这个函数会自动从首地址输出到第一个 '\0' ,这个是空字符,字符串的结束标志,只要给出首地址即可

如果用 *string ,就会出错,除非改成 %c

输出是由这些格式化 字符控制的

string是字符串的首地址,字符串是存储在一起的,以‘\0’结尾的,所以最后输出的是整个字符串,要是输出*string,最后结果是i.
中国物联网校企联盟技术部

*string只是一个字符,那输出的时候只能输出一个字符

string是个字符串的地址,系统会把从这个地址开始,一直到'\0'为止的所有字符都输出,

*string是字符串的第一个字符 而string是字符串的首地址(第一个字符的地址) 但在输出时系统会从这个地址开始自动往下加直到字符串结束

字符串不用加*,还记得输入字符串时不加&吗,他们是一个原理,string是从字符串的第一个地址开始输出


C语言如下程序字符串指针不是存储的是字符串的首地址吗,为什么输出是str...
printf函数里面有 %s ,这个函数会自动从首地址输出到第一个 '\\0' ,这个是空字符,字符串的结束标志,只要给出首地址即可 如果用 *string ,就会出错,除非改成 %c 输出是由这些格式化 字符控制的

用C语言编写一个程序,输入一个字符串,统计其中各个字符出现的次数_百 ...
printf("数字个数:%d\\n小写字母个数:%d\\n大写字母个数:%d\\n",num_count, littlealp_count, bigalp_count);printf("空格个数:%d\\n其他字符个数:%d\\n", emp_count, els_count);return 0;} 程序运行结果如下:

C语言:从键盘输入一个不超过100个字符的字符串,其中字符串只包括字母...
2、输入以下程序:#include <stdio.h>int main(){ char str[40]; scanf("%s",&str); printf("%s",str); return 0;}。3、然后按F5运行程序。4、然后输入想要输入的字符串。5、按回车键,就会弹出你输入的字符串。6、注意字符串的大小,改变中括号中的数字改变输入字符串的大小。

C语言:把数字字符串转换成整型数字
程序如下:若输入字符串"ab56cd87",则输出结果:以%d格式输出十进制整数5687;若输入字符串"-ab56cd87",则输出结果:以%d格式输出十进制整数-5687。

...编写一个程序,从键盘输入一个带有空格的字符串,去掉字符串后再输出...
1、首先,随便创建一个有main方法的类。2、定义一个字符串变量,这里给变量赋值,前后都留有一个空格。3、先运行一遍,看输出效果,可以看到百度包括空格的几个字符都打印出来了。4、为了更加清晰,用字符串对象另外一个方法“length()”得到此字符串的长度为6, 说明的确是“百度”加两个空格的长度...

C语言中如何编写一个字符串复制函数,并在主函数中调用它。
可以利用字符指针结合while循环的方式来编写字符串复制函数。具体实现方法可以参考如下程序:include<stdio.h>void str_copy(char *str1, char *str2) \/\/ 字符串复制函数{ while(*str1++ = *str2++); \/\/ 将字符串str2中的每个字符逐个复制到str1中,直到遇到字符串结束字符'\\0'}void ma...

C语言for循环遍历argv中的字符串,一个一个字符打印
用于存储命令行参数的argv是一组字符串,字符串的个数为argc的值。所以要打印argv中的值,一般使用如下程序:int i;for(i = 0; i < argc; i ++) printf("%s\\n",argv[i]);这时一个个字符串打印的。没有必要要一个个字符打樱 如果要一个个字符打印,可以使用双重循环:int i,j;for(i...

C语言字符串常量的一个问题。
第一个字符串就相当于"abc123",那么长度为6 第二个字符串就相当于"abc",那么长度为3 但是实际操作发现并非如此,如下程序:include <stdio.h> { char c1[0x20] = {0};memcpy(c1, "abc123\\01de\\n", 0x20);printf("%s\\n", c1);char c2[0x20] = {0};memcpy(c2, "abc\\09de\\n"...

用汇编语言编写如下程序:
L5: XOR DX,DX ;转换为十进制字符 DIV BX OR DL,30H DEC SI MOV [SI],DL CMP AX,0 JNE L5 MOV AH,9 LEA DX,SUN INT 21H MOV DX,SI INT 21H MOV AH,4CH INT 21H CODES ENDS END START 2.;;从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,变革显示技术...

编写代码,要求如下(c语言)+1.创建一个文件STRING.txt。+2.由键盘输入...
otherCount);return 0;}在这个示例代码中,我们根据你的要求依次完成了以下操作:使用文件指针 file 创建了名为 “STRING.txt” 的文件,并以写入模式打开。如果文件无法创建,程序将打印一条错误消息并退出。从键盘输入一个字符串,并使用 fgets() 函数将其写入文件。关闭文件。重新打开文件读取字符串,...

碌曲县13192781994: C语言如下程序字符串指针不是存储的是字符串的首地址吗,为什么输出是string而不是*string呢 -
霜施双骨: *string是字符串的第一个字符 而string是字符串的首地址(第一个字符的地址) 但在输出时系统会从这个地址开始自动往下加直到字符串结束

碌曲县13192781994: C语言中的指针指向字符串 -
霜施双骨: 1 方法二是对的.原因是字符串必须存在字符数组中,方法一只定义一个变量,无法存储字符串. 2 方法3. char str[10]; char *p=str; gets(p);

碌曲县13192781994: C语言指针不是储存地址的吗?向链表那样给它分配内存再存数据我非常不解哪位高手给解释下
霜施双骨: 指针,我也刚搞明白,C语言中变态很变态的家伙,你就把它和int ,float相同对待,也是一种数据类型,既然是数据的一种,那就要有内存地址,其实所谓的内存地址在32位机中就是一串数字(大概32位吧),你可以试试printf("%d",p),直接输出指针的值试试.

碌曲县13192781994: C语言中指针变量只能存储地址? -
霜施双骨: 存放地址的变量称为指针变量.指针变量是一种特殊的变量,它不同于一般的变量,一般变量存放的是数据本身,而指针变量存放的是数据的地址.假设在程序中声明了1个int型的变量a,其值为68.系统为变量a分配的首地址为0X65...

碌曲县13192781994: c语言中,字符串指针怎样实现对字符串的读取与存储? -
霜施双骨: 比如char s[30]; 数组名s可以看作数组的首地址,可以直接对它进行操作; 或用一个char指针:char *p(注意:"字符串指针"没有这个说法,可以叫做指向字符数组的指针) p = s;或p = &s[0];用指针p指向s数组的首地址. 不知读取是指打...

碌曲县13192781994: C语言字符串指针使用 -
霜施双骨: printf 中使用%s, 说明输出的是字符串,要求参数应该是 char *类型,而后会从该参数指向的位置开始输出,直到遇到'\0'为止.printf中使用%c,说明输出的是字符,这个时候参数是char类型,也就可以是*p,这时输出的是一个字符.

碌曲县13192781994: C语言中关于字符串指针常量的问题 -
霜施双骨: 第一个:char *p = "123456"; char *s = "asdghh"; *s = *p; 你这个之所以会错,是因为指针s指向的是常量字符串 asdghh 而*s=*p相当于改变常量字符串的值,常量是不能改变的,而且常量也不能做左值,所以出错.第二个:char a[]="123456";//这个的意思是 在内存充开辟空间 把常量字符串复制到这个空间 char *p = a;//这个说明指针p存储的是数组变量a的地址 char a1[]="asdghh"; //同上 char *s =a1; //同上*s = *p; // 这句的意思是 把指针p所指向空间的值(这里为数组a)复制到指针s所指向的空间(这里为数组a1)

碌曲县13192781994: C语言字符串指针问题 -
霜施双骨: 让p指向常量字符串hello的首地址,即p中存hello的第一个字符在内存中的地址,p="hello"; 就等于把字符串首地址赋给了指针变量p 希望能够帮到您 补充您的提问如下:这虽是一个赋值表达式,但不是把内容hello赋给指针p,p的内容仍是地址,是字符串hello的首地址,实际上此表达式就是把字符串首地址赋给p,让p指向常量字符串hello的内存单元,就是这个意思,有点绕,希望您明白了.

碌曲县13192781994: C语言中字符串是不是不能存储回车?帮忙看看这段代码! -
霜施双骨: for(i=0;ch[i]!=13;i++) { ch[i]=getch(); printf("*"); } 这一段有问题.你先判断ch[0]是不是回车,但是这个时候你ch[0]是没有值的.同样,以后的ch1.ch2都没有值就在进行判断.改一下吧:ch[0]=getch(); printf("*"); for(i=1;ch[i-1]!=13;i++) { ch[i]=getch(); printf("*"); } 如果不对,欢迎追问

碌曲县13192781994: c语言 字符指针数组里面的字符串存储在哪 -
霜施双骨: 有个概念得弄清楚:字符指针“里面”是没有字符串的!一个有效的字符指针,如果指向了一个已经存在的字符串,那么这个指针的“值”就是这个字符串的第一个字符的地址.根据这个理解,就是得“先”有字符串,后让字符指针指向这个字符串才有可能,否则指针就是无效的.所以,有效的字符指针指向的字符串“原先”在什么地方存储它还在什么地方.有个一般性的规则:动态创建的字符串在堆里,普通创建的字符串在栈里.无论堆里或栈里,都是系统在内存中划分的一块区域,只是访问方式和生存周期不太一样而已……

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网