wxsh.net
当前位置:首页>>关于char s[4]={"abc"}和char s[4]="abc"有什么区别的资料>>

char s[4]={"abc"}和char s[4]="abc"有什么区别

这样说清楚点!假如有char *s[4]={"ABCD","EF"};,那么s[1]是指向字符E的指针,当然*s[1]就是字符E了!原来的题目初始化项只有一个字符串,不便于说明白。顺便一说,s[0]是指向A的指针……

这个应该是个二维字符数组。 也可以看成一维字符串数组。 它初始化了字符串数组的第一个元素 s[0],相当于 s[0][0] = 'A'; s[0][1] = 'B'; s[0][2] = 'C'; s[0][3] = 'D'; s[0][4] = 0;

输出 s[0][0],s[1][1],s[2][2] 结果ACB

char s[5]={'1','2','3','4','5'};是可以的,但 char s[5]={“12345”};则错了。因为存储字符串"12345"需要6个字节。(外加一个串结束符'\0')

char s[] = "abc",这是定义时即为"abc\0"四个字符。 而char s1[3] ="abc",其中"abc"也实际上是"abc\0",但是s1[3] 只有三个,所以最后的'\0'被舍去了 比方说 char s[] = "abcdef"; sizeof(s) :7 char s1[3] ="abcdef"; sizeof(s1):3

printf("%s",s); //去除*号就可以了

char*s[4]="Ctest\n"; 这个语句有道理,"Ctest\n"是一个常字符串,它有一个匿名地址 ,被赋值给了s[0].其他三个未赋初值.

s + 4 指向的是字符串 s 最后的空字符,而 p 一开始指向第一个字符,之后每次 p 都会往后移动一个字符,当然就会输出成这样了 printf 会把你指定的指针当作读取的起点,然后一直读到碰到的空字符为止

一个 * 表示取地址 两个 ** 表示取地址后这个地址的值 ( 又返回来了, 两个 ** 抵消 ) **(s+1) 这个数组第二个地址的值 "english"

s,是一个数组; p是一个指针,指向数组s首地址,也就是“A”的地址,每次p++就指向后面一个,所以输出就是你的那个结果。 我也是一个新手,有错勿喷!

网站首页 | 网站地图
All rights reserved Powered by www.wxsh.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com