精华内容
下载资源
问答
  • 标题:c语言返回一个二维数组 参考blog:c语言返回一个二维数组 #include<stdio.h> #include<stdlib.h> int ** getInfo(){ int ** b; //定义一个二维数组 b = (int **)malloc(3 * sizeof(int *));...

    标题:c语言返回一个二维数组

    参考blog:c语言返回一个二维数组

    #include<stdio.h>
    #include<stdlib.h>
    
    int ** getInfo(){	
    	int ** b;
    	//定义一个二维数组 
    	b = (int **)malloc(3 * sizeof(int *));
    	for(int i = 0; i < 3; i++){
    		b[i] = (int *)malloc(4 * sizeof(int));
    	}
    	
    	int t = 0;
    	for(int i = 0; i < 3; i++){
    		for(int j = 0; j < 4; j++){
    			b[i][j] = t++;
    		}
    	}	
    	
    	return b; 
    }
    
    int main(void){
    	int a[3][4]	= {
    		{
    			1,2,3,4
    		},
    		{
    			1,2,3,4
    		},
    		{
    			1,2,3,4
    		}
    	};
    	
    	//二维数组的赋值,赋给指针 
    	int (* pdf)[4] = a;
    	for(int i = 0; i < 3; i++){
    		for(int j = 0; j < 4; j++){
    			printf("%d ", pdf[i][j]);
    		}
    		printf("\n");
    	}
    	
    	//int ** d = a;
    	
    	//测试返回一个二维数组
    	printf("测试返回一个二维数组\n"); 
    	int **c = getInfo();
    	for(int i = 0; i < 3; i++){
    		for(int j = 0; j < 4; j++){
    			printf("%d ", c[i][j]);
    		}
    		printf("\n");
    	}
    	return 0;
    } 
    
    
    
    
    
    展开全文
  • C语言返回字符串的四种方式

    千次阅读 2017-06-29 10:21:13
    C语言返回字符串有四种方式:1。使用堆空间,返回申请的堆地址,注意释放2。函数参数传递指针,返回该指针3。返回函数内定义的静态变量(共享)4。返回全局变量使用分配的内存,地址是有效 一:使用堆空间,返回...
    C语言返回字符串有四种方式:1。使用堆空间,返回申请的堆地址,注意释放2。函数参数传递指针,返回该指针3。返回函数内定义的静态变量(共享)4。返回全局变量使用分配的内存,地址是有效 
    
    一:使用堆空间,返回申请的堆地址
    char *fun() 
    { 
           char* s = (char*)calloc(100, sizeof(char*) ); 
           if (s) 
           strcpy ( s , "abc " ); 
           return s; 
    } 
    但这种方式需要注意,必须由使用将将返回的地址free掉 
    二:将地址由入参传入 
    char* fun(char*s) 
    { 
         if (s) 
         strcpy(s, "abc "); 
         return s; 
    } 
    这种方式调用都要注意给s分配的大小是足够。 
    可以这样: 
    char* fun(char*s, int len) 
    { 
         if (s) 
        { 
           strncpy(s, "abc ", len-1); 
           s[len-1] = 0; 
        } 
        return s; 
    } 
    三:使用局部静态变量 
    
    char* fun() 
    { 
    static char s[100]; 
    strcpy(s, "abc "); 
    return s; 
    } 
    这种方式需要注意,不要修改返回的这个字符串,由于是共享地址,对它的修改会反应到每个调用者的。可以在前面加一个const: 
    const char* fun() 
    { 
    static char s[100]; 
    strcpy(s, "abc "); 
    return s; 
    } 
    
    四:使用全局变量 (或静态全局变量)
    char g_s[100]; 
    char* fun() 
    { 
    strcpy(g_s, "abc "); 
    return s; 
    } 
    或:
    
    #define BUFSIZE 4096
    static char *_result_str = (char *)malloc(BUFSIZE);     // FIXME: 希望足够了; 
    
    char* fun() 
    { 
    
    char *str = _result_str;
    strcpy(str, "abc "); 
    return str; 
    } 
    同样的,也要注意这个变量可存储的最大空间。
    
    展开全文
  • C语言返回结构体

    千次阅读 2016-01-17 12:52:56
    在程序中经常需要一个函数返回多个值,通常我们的函数只能返回一个值,用结构体则可以轻松实现多个值的返回。 #include struct A {  int a;  int b; int c; }; struct A callu(int x, int y)...

    在程序中经常需要一个函数返回多个值,通常我们的函数只能返回一个值,用结构体则可以轻松实现多个值的返回。


    #include <stdio.h>



    struct A
    {
        int a;
        int b;
    int c;
    };


    struct A callu(int x, int y)
    {
        struct A t;
        t.a = x * y;
    t.b = x + y;
    t.c = x - y;
        return t;
    }


    int main()
    {
        struct A t;
        t= callu(20,8);
        printf("t.a = %ld\n", t.a);
    printf("t.b = %ld\n", t.b);
    printf("t.c = %ld\n", t.c);
        return 0;
    }
    展开全文
  • C语言返回局部变量

    千次阅读 2019-04-11 16:24:42
    局部变量的作用域在函数的内部,函数返回后,局部变量内存已经释放掉了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。故函数是可以返回局部变量的。 但是如果函数返回的是局部变量的地址(指针...

      局部变量的作用域在函数的内部,函数返回后,局部变量内存已经释放掉了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。故函数是可以返回局部变量的。

            但是如果函数返回的是局部变量的地址(指针)的话,程序运行就会报错。由于只是把指针(地址)复制后返回了,而指针指向的内存(存储的内容)已经被释放了,这样指针无访问该内存的权限,调用后就会报错。

           准确的说,函数不能通过返回指向栈内存的指针(注意这里指的是栈,返回指向堆内存的指针是可以的)。
      案例一:

    #include <iostream>
    
    using namespace std;
    
    char* GetStr0()
    {
        char* ch = "hello world!"; 
        return ch;
    }
    
    void main()
    {
        char* p = nullptr;
        p = GetSt0();
        cout << "GetStr0() : " << p << endl;
    }

       运行返回"hello world!",由于"hello world!"是一个字符串常量,存放在只读数据段(常量区),把该字符串常量存放的只读数据段的首地址赋值给了指针,所以GetStr函数退出时,该字符串常量的内存不会被系统回收,故能够通过指针顺利无误的访问。  

       案例二:

    "hello world!"是局部变量存放在栈中。当GetStr1()函数退出时,栈要清空,局部变量的内存也被清空了,所以函数返回的是一个已被释放的内存地址,打印出来的是乱码。 

    案例三:

    int func()  
    {  
          int a;  
          ....  
          return a;    //可以
    }                     
      
    int * func()  
    {  
          int a;  
          ....  
          return &a;    //无意义,内存释放
    } 

      

            局部变量可分为局部自动变量和局部静态变量,由于a返回的是值(指针指向的内容),故无论是自动还是静态个局部变量是可以的返回的,因为这时返回的是局部变量的值。但不应该返回指向局部自动变量的指针,因为函数调用结束后该局部自动变量被释放了,该指针指向一个已经不再存在的对象,是无意义的。但可以返回指向局部静态变量的指针,因为静态变量的生存期从定义起到程序结束。

    展开全文
  • C语言返回二维数组

    2020-09-14 10:45:48
    以计算两个2×2矩阵的矩阵乘法为例: int ** matrixmulti(int a[][2],int b[][2]){ int **c=(int **)malloc(2*sizeof(int *)); int i=0,j=0,k=0; for(;i<2;i++){ for(;j<... c[i][j]+=a
  • C语言返回多个值

    千次阅读 2015-03-24 08:38:57
    百度上下载的,不知道源自谁。...有学生也尝试了不少方法:如把多个需要返回的值作相应的处理后变成一个可以用return语句返回的数据,再在主调函数中拆开返回的数据使之变成几个值;或者把需要返回多个值
  • C语言返回一个数组

    千次阅读 2019-04-12 12:49:56
    1.使用全局变量 2.使用静态局部变量 3.在函数内动态分配内存 4.在函数调用参数中传入数组地址
  • C语言中,一般返回的变量是不能仿作左值使用的,比如 int main(int argc, char **argv) { int a = 10, b = 20; a > b ? a : b = 50; printf("a = %d b = %d\r\n",a,b); return 0; } 这样在编译的时候...
  • # include # include char *myarr(void); int main(int argc, char const *argv[]) { char *testp; testp = myarr(); for (int i = 0; i (testp); i++) { printf("%c",testp[i]);...神奇的c语言
  • c语言返回多个值——欧几里得算法的应用  今天拿出好久没看到的《算法导论》了,有个习惯,喜欢把上面的例子用c来实现。今天 看到求最大公约数的欧几里得算法,立马想试试。(ps,具体的算法内容,限于时间有限,不...
  • C语言返回文件大小的功能(fseek和ftell的使用) 需求:有时候读文件时,需要知道文件的字符总的个数,可能是为了提前定义缓冲区大小或者拷贝文件等等。也可以用于动态创建数组。 在进行这两个问题之前,先...
  • https://blog.csdn.net/yang382197207/article/details/25873039
  • C语言返回字符串函数,或者通过一个函数改变主函数中某个字符串变量的值有四种方式: 1。使用堆空间,返回申请的堆地址,注意释放 2。函数参数传递指针,返回该指针 3。返回函数内定义的静态变量(共享) 4。...
  • 用malloc在堆上分配空间,并返回。要注意的是,在调用函数中要free掉分配的空间。 将返回的字符指针作为函数形参传入,使用后返回该指针。 返回全局变量的字符指针。 在函数中使用static变量,放在bss段。 ...
  • 结论:函数可以返回局部变量的值,但是不能返回指向栈内存的指针。 原因: 局部变量的作用域为函数内部,函数执行结束,操作系统会自动释放栈上的局部变量。并且函数返回的是局部变量的值拷贝。但是如果返回局部变量...
  • C语言返回数组指针

    2011-08-27 10:06:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • C语言返回2个变量的方法

    千次阅读 2017-09-17 10:18:49
    return new int[] { i, j };
  • Linux下使用C语言返回年月日

    千次阅读 2016-03-03 00:42:38
    #include #include void gettime(char *a) { time_t now; struct tm *timenow; time(&now); //存入now从Epoch到现在的秒数 timenow = gmtime(&now);...则此程序即可返回当前的年月日。 eg: 20160303
  • C语言数学函数 函数定义与语法  函数名: floor  功 能: 返回小于或者等于指定表达式的最大整数  用 法: double floor(double x);  头文件:math.h 函数实例  #include stdio.h> ...
  • 返回指针的函数(指针函数) 什么是返回指针的函数 一个函数可以返回一个整形值 字符型值 实型值 1、如果一个函数它的返回值是一个地址(是一个指针的话),这个函数是一个返回值是指针即指针函数。 2、返回指针的...
  • #include <stdio.h> void test(char c) { c = 'B'; } void main() { char ch = 'A' ; test(ch); printf("%c\n", ch); }
  • 返回值:执行成功返回0,执行失败返回非零。 函数二:ftell stdio中的库函数: 函数原型: long int ftell(FILE * stream ); 功能:当前文件读写位置。 返回值:是当前读写位置偏离文件头部的字节数...
  • 背景是这样的,程序为c语言的程序,包含n多C文件,最终编译成一个动态连接库,对外提供两个void函数。 问题是这样的,程序刚开始执行时有一段(在a文件中) if(b()) { XXX; } else { xxxxx; } b()函数在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,792
精华内容 7,916
关键字:

c语言返回

c语言 订阅