C语言 如何给一个字符串赋值一个指针并使用该指针修改它?

6jygbczu  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(169)

假设我有一个结构数组,它们被定义为

typedef struct myS
{
    int content;
    char *string;
} myT;

我想通过一个指针来改变第0个元素的字符串的值,这样就不必直接通过结构来访问它。
我所做的如下:

myT *tArray;
char **pString;

tArray = malloc(sizeof(myT));
tArray[0].string = "hello";
pString = malloc(sizeof(char *));
*pString = tArray[0].string;

我所期望的是,既然pString指向tArray[0].string,那么应用于tArray[0].string的任何更改都应该反映在*pString上,毕竟,int*int就是这样。
第一次
我真的不明白为什么pString在这里仍然指向"hello"
是否有办法通过另一个变量修改结构的值?

bxjv4tth

bxjv4tth1#

您是否希望获得以下结果?

hello hello hi hi

然后,将.string的地址设置为pString,如下所示:

#include <stdio.h>
#include <stdlib.h>

int main()
{
  typedef struct myS
  {
      int content;
      char *string;
  } myT;
  myT *tArray;
  char **pString;

  tArray = malloc(sizeof(myT));
  tArray[0].string = "hello";
  //pString = malloc(sizeof(char *));
  //*pString = tArray[0].string;
  pString = &tArray[0].string;

  printf("%s %s ", tArray[0].string, *pString);
  tArray[0].string = "hi";
  printf("%s %s", tArray[0].string, *pString);

  return 0;
}

相关问题