关于C语言字符串和地址的问题

2024-11-24 06:29:11
推荐回答(2个)
回答1:

char *a;//定义指针变量
char *b;
char c【】=“LUCENT”;//定义字符数组,用字符串初始化
a=malloc(7);//动态开辟7个字节的存储空间,将空间首地址赋值给指针变量a
strcpy(a,c);//把数组c中的字符串拷贝到指针变量a指向的空间
b=a+sizeof(c)-4;//a的值加上数组c的存储字节数-4,结果b=a+3,也就是b指向字符'E'
printf(”1:%c\n“,a【2】);//输出C
printf(”2:%s\n“,a+2);//输出a+2开始的字符串,也就是CENT
printf(”3:%d\n“,strlen(a));//输出a指向的字符串的有效长度,不包括'\0',结果输出6
printf(”4:%c\n“,*b);//输出指针b指向的字符,也就是E
*(++b)=’\0‘;//让b指向下一个字符,然后用'\0'覆盖原来的字符,原来的字符串变成了"LUCE\0T"
printf(”5:%s\n“,a);//输出a指向的字符串,遇到\0结束,即输出LUCE
printf(”6:%d\n“,strlen(b));//求b指向的字符串的有效长度,b现在指向的字符是\0,有效长度不包括它,所以为0

回答2:

1: C
2: CENT
3: 6
4: E
5: LUCE
6: 0