标签: pointers

为什么realloc在这种情况下不能正常工作?

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

char *func(char * str){


    int len;
    len=strlen(str)+3;
    str = (char *)realloc(str,len);
    return str;


}

void main(){

    printf("str:%s",func("hello"));

}
Run Code Online (Sandbox Code Playgroud)

最后的ans打印(null),而不是打印字符串:"hello".任何人都可以解释为什么会如此?我无法识别任何错误. 任何人都可以纠正错误,并帮助我使用正常工作的代码.请!

c string pointers realloc

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

C calloc 3d数组在头文件中定义,读取错误无效

我在driver.h中初始化了一个3D双数组:

extern double ***grid;
Run Code Online (Sandbox Code Playgroud)

我想在driver.c中设置它的值:

double ***grid;
grid = calloc(cells_x * cells_y * cells_z, sizeof(double)); 
grid[0][1][2] = 123;
Run Code Online (Sandbox Code Playgroud)

但是,valgrind给出"无效读取大小8"错误.我究竟做错了什么?

c arrays pointers

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

使用条件运算符时变量值如何变化?

任何人都可以帮我解释上面代码的输出..它将在不同的编译器中打印不同的输出.哪一个要考虑.

#include<stdio.h>

int main()
{
    int a=0, b=1, c=2;
    *((a+1 == 1) ? &b : &a) = a ? b : c;
    printf("%d, %d, %d\n", a, b, c);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

产量

0,2,2
Run Code Online (Sandbox Code Playgroud)

此输出来自Codeblocks

c pointers ternary-operator conditional-operator

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

无法在C中声明struct里面的struct指针数组

我想在struct中有一个数组,它将存储相同数据类型(即struct map)的指针.我查看了Stackoverflow,发现了这个:

struct map {
    int city;
    struct map **link = (struct map *)malloc(204800 * sizeof(struct map *));
}
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误: -

error: expected ':', ',', ';', '}' or '__attribute__' before '=' token    
    struct map **link = (struct map *)malloc(204800*sizeof(struct map *));
Run Code Online (Sandbox Code Playgroud)

c arrays struct pointers

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

使用Struct和指针的程序中的不确定性(C语言程序)

考虑以下程序:

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

int main()
{

typedef struct WFC_STRUCT {
int a;
int b;
} WFC_STRUCT;

WFC_STRUCT *ptr = (WFC_STRUCT*) NULL;

ptr->a=10;


return(0);

}
Run Code Online (Sandbox Code Playgroud)

我想了解教学中发生的事情:

WFC_STRUCT *ptr = (WFC_STRUCT*) NULL;
Run Code Online (Sandbox Code Playgroud)

为什么该计划正在破产?在什么情况下使用上面的说明?

c struct pointers

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

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

ISO C++禁止在C++代码中比较指针和整数[-fpermissive]

我的代码有问题.它始终返回错误ISO C++禁止指针和整数[-fpermissive]之间的比较.你能帮我看看这里有什么问题以及如何解决?

#include <iostream>
using namespace std;
char x;
int main()
{
    cout << "Welcome to the citation machine. What do you want to cite?" << endl;
    cin >> x;
    if (x == "book")
    {
        cout << "What is the name of the book?";
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ pointers

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

为什么解引用指向string(char数组)的指针会返回整个字符串而不是第一个字符?

由于指向数组的指针指向数组的第一个元素(具有相同的地址),我不明白为什么会发生这种情况:

#include <stdio.h>

int main(void) {    
    char (*t)[] = {"test text"};
    printf("%s\n", *t + 1); // prints "est text"
}
Run Code Online (Sandbox Code Playgroud)

另外,为什么打印下面的代码2呢?

#include <stdio.h>

int main(void) {    
    char (*t)[] = {1, 2, 3, 4, 5};
    printf("%d\n", *t + 1); // prints "2"
}
Run Code Online (Sandbox Code Playgroud)

c arrays string pointers pointer-arithmetic

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

尝试使用指针访问字符串数据时,C程序不打印文本

我正在通过KN King的"C编程:现代方法".该程序取自项目1b的"第12节 - 指针和数组".粗略地说,目标是:编写一个读取消息的程序,然后打印消息的反向.将消息存储在数组中,并使用指针跟踪数组中的当前位置.

目前,我只是试图在我尝试向后打印之前正常打印消息.我很沮丧,因为我的printMessage()函数与此处的 print_message()函数是1:1 ,但是当程序运行并输入一些文本时,它只打印出一个空白行.如果printMessage()的for循环中的行更改为'printf("%c",*p);则会发生这种情况.同样.

这是我的代码:

#include <stdio.h>

#define MAX_MESSAGE_LENGTH 100

int readMessage(char msg[]);
void printMessage(char msg[], int len);

/* finish later
 void printMessageReversed(char msg[], int len); */

int main(void){
    int msg_length;
    char c[MAX_MESSAGE_LENGTH];

    printf("Enter a message: ");
    msg_length = readMessage(c);

    printf("Length: %d", msg_length);

    printf("\nMessage: ");
    printMessage(c, msg_length);

    return 0;
}

int readMessage(char msg[]){
    int i;
    for(i = 0; (*msg = getchar()) != '\n'; i++);
    return i;
}

void printMessage(char msg[], int len){
    char *p;

    for(p = …
Run Code Online (Sandbox Code Playgroud)

c arrays string pointers char

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

为什么指针在这段代码中起作用而不是正常变量?

在我的下面的代码中,我得到了以下警告:

在函数'on_btn_Convert_clicked'中:|

警告:赋值在没有强制转换的情况下从指针生成整数[默认情况下启用] |

警告:传递'gtk_label_set_text'的参数2使得整数指针没有强制转换[默认情况下启用]

|| ===构建完成:0个错误,2个警告(0分钟,1秒(秒))=== |

如果我按原样运行程序,它将打开GUI但有问题的按钮会在按下时导致分段错误并使程序崩溃.

#include <stdlib.h>
#include <stdio.h>
//include gtk headers
#include <gtk/gtk.h>

//define pointer variable names
GtkWidget  *plblFileName;
GtkWidget  *pbtnConvert;
GtkWidget  *pbtnFileChooser;


//prototype functions
char on_btn_Convert_clicked();

char on_btn_Convert_clicked()
{
   //define variables
   char hello;

   hello = "hello!";

   gtk_label_set_text(GTK_LABEL(plblFileName), hello);
   return 0;
}

//start main loop
int main( int    argc,
      char **argv )
{
    GtkBuilder *builder;
    GtkWidget  *window;
    GError     *error = NULL;

    //Init GTK+
    gtk_init( &argc, &argv );

    //Create new GtkBuilder object
    builder = gtk_builder_new();
    //Load …
Run Code Online (Sandbox Code Playgroud)

c string variables pointers string-literals

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