|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 jian-qi- 于 2024-1-1 21:14 编辑
#include<stdio.h>
int main(void)
{
char str[] = "I Love FishC.com!";
int count = 0;
while (*str++ != '\0')
{
count++;
}
printf("总共有%d个字符!\n",count);
return 0;
}
由于str是常量不可改变,这样是不行的但为什么下面代码中的array可以改变
int array[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
int (*ptr)[3] = array + 1;
@FishC
本帖最后由 jackz007 于 2024-1-1 20:39 编辑
- #include<stdio.h>
- int main(void)
- {
- char str[] = "I Love FishC.com!"; // 这样定义的 str 是常量指针,其值为固定的内存地址,不可以在运行时被改变,也就是说,str 不可以被赋值,而且,只能出现在等号的右边。
- int count = 0;
- while (* str++ != '\0') // str 是常量,不可以被赋值,str ++ 属于非法操作
- {
- count++;
- }
- printf("总共有%d个字符!\n",count);
- return 0;
- }
复制代码
建议改成这样:
- #include<stdio.h>
- int main(void)
- {
- const char * str = "I Love FishC.com!" ; // 这样定义 str 就不会产生问题
- int count = 0 ;
- while (* str ++ != '\0')
- {
- count++ ;
- }
- printf("总共有%d个字符!\n",count) ;
- return 0 ;
- }
复制代码
|
|