小编Mik*_*ike的帖子

将字符串数组传递给函数

我试图将一个字符串数组(C样式字符串)传递给一个函数.但是,我不希望在函数的每个字符串的长度上放置最大大小,也不想动态分配数组.这是我先写的代码:

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

void fun(char *s[])
{
    printf("Entering Fun\n");
    printf("s[1]=%s\n",(char *)s[1]);
}

int main(void)
{
    char myStrings[2][12];

    strcpy(myStrings[0],"7/2/2010");
    strcpy(myStrings[1],"hello");
    fun(myStrings);

    return(0);
}
Run Code Online (Sandbox Code Playgroud)

我在运行时遇到了一个seg错误,并且编译器发出以下警告:stackov.c:在函数'main'中:stackov.c:17:警告:从不兼容的指针类型stackov.c传递'fun'的参数1:5:注意:预期'char**'但参数类型为'char(*)[12]'

但是,当我将main()更改为以下内容时,它可以正常工作:

int main(void)
{
    char myStrings[2][12];
    char *newStrings[2];

    strcpy(myStrings[0],"7/2/2010");
    strcpy(myStrings[1],"hello");
    newStrings[0]=myStrings[0];
    newStrings[1]=myStrings[1];
    fun(newStrings);

    return(0);
}
Run Code Online (Sandbox Code Playgroud)

当数组传递给函数时,数组[2] [12]是否与字符指针数组相同?

c

5
推荐指数
2
解决办法
1万
查看次数

释放信号处理程序内的内存

我正在编写一个使用套接字的API.在API中,我为各种项目分配内存.我想确保关闭套接字并释放内存以防有诸如Ctrl-C之类的信号.在研究这个时,似乎free()不在安全功能列表(man 7信号)上,因此,我无法释放信号处理程序内的内存.我可以关闭套接字就好了.有没有想过如何释放记忆?提前谢谢您的时间.

c linux signals signal-handling

5
推荐指数
2
解决办法
2852
查看次数

标签 统计

c ×2

linux ×1

signal-handling ×1

signals ×1