gpt4 book ai didi

c - 指针错误。一元 * 的类型参数无效

转载 作者:行者123 更新时间:2023-11-30 15:33:17 25 4
gpt4 key购买 nike

#include "cdebug.h"
#include "stdlib.h"

int main()
{
char *cbloc = (char *)malloc(sizeof(char) * 40);
memset(cbloc, 40, sizeof(char) * 40);
DFORC(cbloc, 0, sizeof(char) * 40);
system("PAUSE");
}

下面是我为使用指针进行调试而编写的 header

#ifndef _CDEBUG_H_
#define _CDEBUG_H_
#include "stdio.h"

int counter;

//Debugging functions written by skrillac

//constants
#define NEWLN() printf("\n");

#define DFORC(ptr, offset, len) for (counter = offset; counter < len+offset; counter++)printf("'%c', ", *ptr[counter]);
#define DFORI(ptr, offset, len) for (counter = offset; counter < len+offset; counter++)printf("'%i', ", *ptr[counter]);
#define DFORV(ptr, offset, len) for (counter = offset; counter < len+offset; counter++)printf("%x, ", *ptr[counter]);

#endif

错误发生在 DFORC() 宏中的某个位置。我想我的问题是它到底在哪里以及我该如何解决它?

最佳答案

cbloc是一个指向字符的指针,因此在DFORC中,ptr也是一个指向字符的指针。声明:

printf("'%c', ", *ptr[counter]);

首先使用ptr作为数组,访问该数组的元素counter。这将返回一个char(不是char *)。然后,您尝试取消引用该 char,这是没有意义的,因此会出现错误。

要解决此问题,请将该语句更改为以下任一语句:

printf("'%c', ", ptr[counter]);

printf("'%c', ", *(ptr + counter));

关于c - 指针错误。一元 * 的类型参数无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23773019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com