小编Hel*_*PLs的帖子

关于 C 中的强制转换的混乱

我只是想问一下有什么区别

int *a = (int *)malloc(sizeof(int))
Run Code Online (Sandbox Code Playgroud)

int *a = malloc(sizeof(int))
Run Code Online (Sandbox Code Playgroud)

因为我在做项目时遇到了这种情况,我尝试创建一个数组作为指针,并动态为其分配内存。但是当我使用时,int * a = malloc(sizeof(int))我无法更改数组的任何值,从而导致分段错误,当我将其更改为int * a =(int *)malloc(sizeof(int))它时,一切都开始正常工作。更准确地说,这是有问题的代码:

     int i = 0;
     for (i = 0; i < valCounter; i++) {
          if (strcmp(vars[i].name, name) == 0) {
               return 2;
          }
     }
     strcpy(vars[valCounter].name, name);
     strcpy(vars[valCounter].type, type);
     i--;
     vars[i].intArrayVal = (int *)malloc((dimension + 5) * sizeof(int)); 
     int j = 0;
     char currentNumber[1000];
     char elemente[1000];
     int *pointer;
     strcpy(elemente, elements);
     strcpy(currentNumber, strtok(elemente, ","));
     vars[i].intArrayVal[j++] = atoi(currentNumber);
     while (currentNumber …
Run Code Online (Sandbox Code Playgroud)

c malloc pointers casting

0
推荐指数
1
解决办法
92
查看次数

标签 统计

c ×1

casting ×1

malloc ×1

pointers ×1