Tag: 指针

跟随malloc返回的指针(0)

我想了解一部分代码。 我遗漏了很多代码,以便更容易解释,并避免不必要的混淆。 typedef void *UP_T; void FunctionC(void *pvD, int Offset) { unsigned long long int temp; void *pvFD = NULL; pvFD = pvD + Offset; temp = (unsigned long long int)*(int *)pvFD; } void FunctionB(UP_T s) { FunctionC(s, 8); } void FunctionA() { char *tempstorage=(char *)malloc(0); FunctionB(tempstorage); } int main () { FunctionA(); return 0; […]

在C中传递和更改函数内部的数组

我有这个简单的C程序,它将函数中的任何数组元素更改为2。 虽然它有效但令我困惑的是,我不应该将数组地址传递给函数,而不是数组本身? 它不是那样工作的…… void function(int *val, int element){ *(val+element) = 2; } int main(int argc, char *argv[]) { int value[2]; value[0] = 10; value[1] = 5; int element = 0; function(value, element); return 0; }

不兼容的C型错误?

uint32 InterruptLatency; uint8 measurements[32]; char buf[256]; int kernelinterrupt time() { fscanf(fp,”%lu”, InterruptLatency); // I am reading the data from kernel which is not shown here measurements[17] = InterrupLatency; buf = &measurements; // I am getting error here as below // after storing it in buffer I am sending the data from but to another layer […]

将返回的指针分配给数组

我有一个函数返回float *,它实际上作为返回函数中的数组填充,这样 float* some_fnc() { float *x=malloc(sizeof(float)*4); x[0]=…… } … // in main float y[4]; y=some_fnc(); 但是我收到“不兼容的类型”错误,这是正常的吗? 有没有办法克服这个w / o声明y为浮动*?

指向字符串

以下两个代码片段编译时没有任何错误/警告但在运行时崩溃。 请赐教。 计划1 int main( ) { char *p= “Hello” ; *p = ‘B’ ; printf(“\n%s”,p); return 0; } 计划2 int main( ) { char *p= “Hello” ; Char *q=”mug” *q = *p ; printf(“\n%s”,q); return 0; } 对于程序2,我预计输出为’Hug’。

可能简单但令人困惑的分配错误

#include int main() { char gradesList[5]; gradesList[2] = “X”; printf(“%c”, gradesList[2]); } 当我尝试运行此代码时,我收到以下错误: 指向整数转换的指针不兼容 赋值从指针生成整数而不进行强制转换

将2D数组传递给函数

gcc 4.6.2 c89 我有以下要传递给函数的2D数组: char elements[MAX_NUM_ELEMENTS][MAX_STRING_LEN] = {{0}}; 我的函数原型是: int get_elements(char **elements) 我正在调用这样的函数: get_elements(elements); 但是,我收到以下错误: expected ‘char **’ but argument is of type ‘char (*)[128]’ 所有数组都会转换为指针,所以我确定为什么我不能只传递指针。 非常感谢任何建议,

C程序,为什么取消引用指针的char指针并没有得到预期的值

在这个程序中我有char变量a , b是指向b的指针, c是指向b的指针。 而*a=b , *c不等于b 。 我不明白为什么,谁能解释一下? 另一件事我不明白我如果将变量从char更改为int ,则取消引用c b值。 *c等于b 。但如果变量是char类型,则不是。 #include #include int main() { char a = “a” ; char *b; b = &a; printf(“%d\n”, b); printf(“%d\n\n”, &a); printf(“Deference b* hold value: %d\n”, *b); printf(“a hold value: %d\n\n”, a); char *c; c = &b; printf(“%d\n”, c); printf(“%d\n\n”, &b); printf(“Deference *c […]

将项目转换为C中链接列表的末尾

编辑*(晚上8:14) – 抱歉,我更正了我的代码并将其作为一种方法,因此可以更容易理解。 在添加到链表的末尾时,我不确定如何正确地转换结构。 编译此代码会在最后一行给出一个强制警告。 这可能是我的其余代码无法正常运行的原因。 例如: #include typedef struct { int data; struct node *next; } node; node *HEAD = NULL; node *addNode(int num) { if (HEAD == NULL) { HEAD = (node *)malloc(sizeof(node)); HEAD->next = NULL; HEAD->data = num; } else { node *newNode; newNode = (node *)malloc(sizeof(node)); newNode->data = num; newNode->next = […]

有没有办法改进这个函数,用malloc分配的字符串中的另一个字符串替换子串的出现?

我是C的新手,我决定创建一个名为str_replace的函数,它替换使用malloc创建的字符串内的字符串。 它似乎工作,但任何人都可以找到任何改进的余地。 任何建议将被认真考虑。 我想知道人们是否认为找出计算新字符串大小的出现次数是一个好主意,如果我使用指针有意义。 #include #include #include char * str_replace(char * string,char * find,char * replace){ //Replaces each occurence of a particular string inside a malloc-made string with another string char * pos = string; size_t replace_size = strlen(replace); size_t find_size = strlen(find); size_t excess = replace_size – find_size; //Get number of occurences int x […]