我只是在编写必须重新分配指向常量字符串 A,B,C 的指针数组 X 的代码(请参见下面的方案):
_______ _______ _______ ________ ________________
|char* A|char* B|char* C|...|char** X|...|char*** pref_arr|...
""""""" """"""" """"""" """""""" """"""""""""""""
__ __
|\______________________/ |\__________/
我有一个 A,B,C 数组,指向该数组X的指针和一个指向 X 的指针 pref_arr 。 我在方案中没有空格,但是所有字符都可以用作const。
然后我有以下代码
function(const char*** pref_arr, int new_length) {
const char** new_pref_arr = realloc(**pref_arr, sizeof(const char*) * new_length);
// some other stuff to do...
}
我试图将数组 X 重新分配为长度 new_length 。
问题是,我的IDE警告我,将const char*
传递给void*
会丢弃限定符。
答案 0 :(得分:1)
这里的问题是,您对引用的引用过多,一个星号正是您想要的,而不是两个。见下文:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.CardView
android:id="@+id/cv_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toBottomOf="parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:text="Text View Test"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.v7.widget.CardView>
<Button
android:id="@+id/materialButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="280dp"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cv_text" />
</android.support.constraint.ConstraintLayout>
您在代码中所做的事情是您试图重新分配字符串A(因为function(const char*** pref_arr) {
const char** new_pref_arr = realloc(*pref_arr, sizeof(const char*) * N);
// some other stuff to do...
}
恰好指向该字符串-通过双重解引用),这可能不是您想要的。