【问题标题】:Can values of array of pointers to strings be overwriten?可以覆盖指向字符串的指针数组的值吗?
【发布时间】:2018-11-25 00:35:03
【问题描述】:

例如:

char* p[10];
char* x = "string"
char* y = "char"
int main{

    fun1(){
       for (i = 0; i<10;i++ ){
             p[i]=x;
       }
    }

    fun2(){
       for (i = 0; i<10;i++ ){
             p[i]= y;
       }
     }
}

指针指向的值会被覆盖吗?或将保存在不同的地址。

【问题讨论】:

  • @AlexandreFenyo 不要破坏帖子讨论 C 和 java。

标签: c arrays string pointers char


【解决方案1】:

除了一些语法和其他错误之外,是的,使用char *p[10] 声明的数组p 中的指针可能会被修改。这只是将它们更改为指向不同的地方。

【讨论】:

  • 那么第一个中的值会保留吗?
  • @Sansara:更改指针不会更改它们指向的位置的数据。它只是改变了指针。
  • 那么释放之前保存的空间的最佳方法是什么?
  • @Sansara:字符串文字是永久的;它们在您的程序的整个生命周期中都存在。你不能释放他们。如果指针指向动态分配的空间(如mallocrealloccalloc),那么您应该使用free 释放空间。
猜你喜欢
  • 1970-01-01
  • 2014-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多