if(new_arr){//重新开启的堆空间是成功的
free(new_arr);
new_arr = NULL;//为了不出现悬空指针
}else{//失败
free(arr);
arr = NULL;
}
free只是清空堆空间,必须将指针指向NULL,不然会chuan变成悬空指针。
字符串数组:
遇到 ‘\0’’ 才结束,可以改变单个字符的值
字符串指针:
结尾默认添加 ‘\0’,不能修改单个字符的值,会崩溃------>
崩溃的原理:数组在栈区持有静态区域的字符串的拷贝,直接修改的是拷贝的值,可以修改,而指针持有的是指向静态区域的值的地址,静态区域的值不允许修改,拒绝访问
int getLen(char*string){
while(*string){//挪动指针,*string != '\0',就一直遍历
}
}
int main(){
char string[] = {'A','B','C','D','E','\0'};//printf能够停下来,不去打印系统值
int r = getLen();
printf("长度是%d\n",r);
return 0;
}
数组参数传递会优化为指针传递