按理说这个指针已经指向了地址,我这样改变指针指向地址的值为什么输出后没有结果
程序错误,所以结果错误
*p="jkdfg" ; *p指向 常量字符串,是不能改变的,改为: p[10];
这里有一些基础得知识点你可以百度加自己练习梳理一下:
1:c语言中字符串得表示以\0终止,如何确定字符串得长度?
2: 字符串得初始化可以用字符数组或者char * 有关char *字符串得初始化,你百度梳理一下
3:这里特别要注意char *对字符串得初始化,如果直接初始化,默认是const,要不就要用malloc
4:const关键字得作用,修饰为const,就不允许修改该变量。
5:数组越界这里也要特别细心关注
int main()
{
char a[10] = "woaizhong";//这里其实数组中存的应该是woaizhong\0 \0是字符串终结标志
//char* b = "dajiahaoa"; //这里虽然有的编译器能编过,但实际上是默认为const char*的,其中的字符是不允许被修改的
//vs2019这种就编译不通过 必须指定为
//const char* b = "dajiahaoa"; //但是 这种定义对b[i]后面赋值也是不允许的,了解一下const关键字
char b[11] = "dajiahaoa";
//这里还需要注意 b的长度一定要大于等于a的
//a[i] 表示的是一个字符 这里你的判断应该是
int i = 0;
int lena = strlen(a); //求得是字符串得长度 不包含\0
for (i = 0; i < strlen(a) && i< strlen(b); i++)
{
b[i] = a[i];
}
b[i] = '\0'; //注意这里不要越界,是i(循环终止已经+1)
printf("%s \n", b);
}
把a 的首地址给到b就好,也就是 b = a;不需要结束符和for循环,供你参考!!