char+str+hello
答:str1 是指针,没有动态分配过单元。所以 是 4字节 地址 ,sizeof() 得 4。str2="hello" 语法错误。正确写法:char str1[]="hello", str2[]="hello";printf("%d %d",sizeof(str1),strlen(str2));sizeof() 计入 '\0'; strlen() 不计入 '\0'...
答:这个我觉得很难回答。"hello"字面上5个字符,占据5个字节存储空间,但是就得看什么程序中怎么存储了,因为逻辑结构不同,最终所占据的存储空间就不同。如:拿C语言举例:char str[5]={'h','e','l','l','o'}; //此处str属于字符数组,里面存储了hello这个单词的每一个字母,共计所占存储...
答:应根据编译器对各类型决定了,以下为32位机标准的结果 char str[ ]= ”Hello”;char *p=str;int n=10;sizeof(str)=( 6 )sizeofchar str[ ]= ”Hello”;/*有误吧,应该重复了吧*/ char *p=str;int n=10;sizeof(str)=( 6 )/*求总共的字节数,不是长度数,比较strlen函...
答:char str[5]= "Hello";int main(){ Prtf1();Prtf2();Prtf3();Prtf4();Prtf5();Prtf6();return 0;} //第一种函数调用-直接使用printf函数 void Prtf1(){ printf("Hello\n");} //第二种函数调用-字符数组 void Prtf2(){ int i;for(i=0; i<5; i++){ printf("%c",str...
答:前面那个是在定义的时候赋值,char数据类型只能在定义变量的时候赋值字符串。举例1 char str[]="Hello!"; 或者char str[]={"Hello!"};这两个是一样的。举例2 char str[]; str[]="Hello!"; 这里先定义,在赋值,这局赋值语句语法是错误的。举例3 例2不行,那如何赋值。如下 char str[]...
答:6!!因为除了hello这5个字节外,编译器还给加了'\0', 用来标志字符串的结束。
答:字符串最后有'\0'结束;想想int a[2]={1,2,3},,一样通不过。‘char str[5];strcpy(str,"hello") ;strcpy函数实现时,把串中每个字符,依次放入到字符数组中,(str++)=串中的每个字符。虽然,此处没有报错,实际上是有问题的。存在数组越界情况。str+5时='\0',在输出的时候,输出'\0'...
答:回答:5,strlen计算的就是字符串长度,这里显然就是5个
答:标准字符串隐含着末尾的结束符\0,以上题目的答案是A 6
答:根据字符串存储的变量的不同,方法不同,参考代码:存储在char数组中(支持C/C++)char str[]="hello" ;int i;for( i=0;str[i];i++ ) printf("%c\n", str[i] ); //以数组方式引用一个字符:str[i] for( i=0;*(str+i);i++ ) printf("%c\n", *(str+i) ); //...
网友评论:
全蒋17639037711:
定义char *str=“hello” 为何str[2]='L'可以 *(str+2)='L'不行 -
29570和饲
: char *str="hello"这种定义是字符串常量,被定义在只读数据段里,只能读,不可修改或赋值,否则会出错...以上两种都不行.
全蒋17639037711:
C++语言char*str="helloworld";什么意思啊 -
29570和饲
: ....str 保存着 Helloworld! 的意思 你可以用 printf(str);
全蒋17639037711:
在c语言中char str[6]="hello",可以将字符串“hello”正确赋给数组 -
29570和饲
: 不行~~~~ 字符串的长度不对~~~ 可以用单个字符赋初值或者用strcpy语句复制字符串也行.反正这样不行de ~~~~~~ PS:自己试试不就可以了吗~~~~~~⊙﹏⊙
全蒋17639037711:
请问char str[20]="Hello";这样的语法符合C规则吗? -
29570和饲
: 完全符合C语法规则的,char str[20]="Hello"; 等价于 char str[20]={'H','e','l','l','0','\0'}; 也等价于 char *str="Hello"; 上面三条语句对字符串初始化都是可以的.
全蒋17639037711:
32位编译器上 char *str1 = “Hello”,str2[]=”Hello”; -
29570和饲
: 字符串指针型变量的实质是指针,而不是字符型变量,和是不是首地址无关.所以sizeof的结果就是指针变量的大小,在32位上是4字节,在64位上是8字节. 如果想知道字符串的大小,可以采用strlen函数.
全蒋17639037711:
char *str[] = { "hello" }; char *p; p = str[0]; -
29570和饲
: 楼上的解释是对的,给你举个例子吧把你的程序稍作修改 char *str[] = { "hello","world"}; char *p; p = str[0]; 那么cout
全蒋17639037711:
C语言 字符串 连接 不用函数 思想 -
29570和饲
: #include <stdio.h>int main( void ){ char str1[] = "hello";char str2[] = " world!";char str3[20] = { 0 }; int i, j; for( i=0, j=0; str1[j]!='\0' && i<20; j++, i++ )str3[i] = str1[j]; for( j=0; str2[j]!='\0' && i<20; j++, i++ )str3[i] = str2[j]; str3[i] = '\0'; return 0; }
全蒋17639037711:
c语言中的char *string="hello" -
29570和饲
: 你的理解错误的 char *string="hello";//定义一个名为string的char指针并指向一个字符串为"hello"的第一个地址,这个和 int i; int * pi; pi=&i; 其实是一样的,只是这个是直接指向变量i的第一个地址,而上边是指向常量hello第一个地址,区别在于变量和常量
全蒋17639037711:
请高人指点 char str[]="hello"; printf("%s",str);str是指针还是地址呢?printf执行前? -
29570和饲
: 什么指针啊 地址啊 str+2 就是简单的地址加2 char都是1个字节的 因此地址向后偏移两位
全蒋17639037711:
char *str="hello"; name=new char[i];name=str; 请问可以这样吧字符串传给name吗? -
29570和饲
: 可以---因为你访问name指针得到的就是hello这个字符串...不可以---因为hello并没有填充到new出来的空间里去...关键还是看你后面的代码 而且你这样写代码,会造成内存泄露,没有指针用来记录new出来的堆 当你delete name时也会造成崩溃,因为释放的是常量区的内存