假设我创建了一个char * s =“ something”,然后分配了另一个变量s1 = s,s1将使用s的内存引用,还是将其转到另一个内存块并复制s的“值”,以便自己参考吗?
答案 0 :(得分:2)
假定您使用的是C而不是C ++,则“字符串”实际上是指向字符的指针(大概是字符数组,实际上是“字符”)。因此,分配“字符串”就是分配指针,并且将不会涉及所指向的内存(由所述指针)的副本。
<mat-checkbox (change)="checkCheckBoxvalue($event)">Check me!</mat-checkbox>
checkCheckBoxvalue(event){
console.log(event.checked)
}
答案 1 :(得分:1)
在C中,没有字符串类型。 C中的字符串只是字符数组。字符串变量声明为char *
类型,它是指向char(数组)的指针。
因此,赋值s1 = s
只会将指针从s复制到s1,即内存引用,而不是字符串数据的副本。
如果要复制字符串,可以使用strdup()
函数,该函数将分配内存并将字符串数据复制到其中。请记住,之后free()
。