关于指针函数与指针数组的若干问题归纳

1.C语言中计算数组的占用内存及数组元素个数的语句

int nums[4] = {2,7,12,13};

int numsSize = sizeof(nums);

int numsCount  =  sizeof(nums)/sizeof(int);

2.C语言中如何返回一个数组

在C语言中,无法直接返回一个数组,可通过返回对应类型指针的方式返回数组。

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

int* twoSum(int* nums, int numsSize, int target) 
{
    int flag = 0;  //标记是否找到,0未找到
    int *temp = (int * ) malloc (sizeof (int) * 2);  //开辟内存,用于保存等会返回的值
    for(int i = 0; i < numsSize-1; i++)  
    { 
        for(int j = i+1; j < numsSize; j++)                   
        {
            if(target == nums[i] + nums[j])     //找到后则保存起来,且标记
            {
                 temp[0] = i;
                 temp[1] = j;
                 flag = 1; 
                 break;  //找到后跳出循环
            }
        }
        if(1 == flag)    //找到后跳出循环                
        break;
    } 
    return temp;    //返回开辟了内存空间的指针数组
}

int main()
{
    int nums[4] = {2,7,11,18};
    int numsSize = sizeof(nums);
    int target = 9;

int *p;  //定义指针来接返回值
    p = twoSum(nums, numsSize, target);

printf("[%d,%d]\n", p[0],p[1]);  //输出两数的下标
    
    return 0;
}

3.C语言中如何去接一个返回的数组

#include<stdio.h>

int *arry ( int a[]);  //指针函数前置声明

int main ()
{    
    int a[] = {0,1,0,1,1,0,1,0};  //定义数组并初始化
    int *b = arry(a);  //定义整型指针b来指向返回值

for(int i = 0; i < 8; i++)  //将数组的遍历输出
    {
         printf("%d ", a[i]);
    }
    return 0;  
}

int *arry(int a[])
{

for(int i = 0; i < 8; i++)  //将原数组中的01位置变换
    {
        if (a[i] == 0)
        {
            a[i] = 1;
        }
        else 
        {
            a[i] = 0;
        }
    }
    return a;  //返回数组a的首地址
}
****************************************************************************

原文地址:https://www.cnblogs.com/-lhy-to-s/p/10664877.html

时间: 2024-08-07 13:09:11

关于指针函数与指针数组的若干问题归纳的相关文章

深入理解 [指针函数] 、[函数指针]、[指针的指针]、[指向指针数组的指针]

指针函数 1.指针函数是指带指针的函数,即本质是一个函数.当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中. 函数返回类型是某一类型的指针: 格式: 类型标识符  *函数名(参数表) int *match(void *key_x,void *key_y); 解析:首先来说它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针

指针数组,数组指针、指针函数,函数指针

听到这几个名词不知道大家什么感受,反正我是一脸懵逼,不过我还是比较好学的,在老师的指导下,自己下去也钻研了一下,有一些自己的见解,我想在学习过程中也有童鞋遇到了相同的问题,希望我的总结能给你带来帮助. 首先我们想明确一下这几个概念,知道他们都表示什么,ok,请看: 函数指针:函数指针是指向函数的指针变量. 因而"函数指针"本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所述,C在编译时,每一个函数都有一个入口地址,该

指针数组、数组指针、函数指针、指针函数总结

指针数组 && 数组指针 char *a[5]; //定义一个指针数组, 数组的元素都是char *指针类型.初始化也可以在里面存放字符或字符串.a的类型是char *[5] //若char *a[5]={"red","white","blue","dark","green"}; //a在这里的类型是char *[],实质上是一个二级指针.也就是说a所代表的那块内存里面存放着的是数组中第一个

指针数组、数组指针、函数指针、指针函数总结C++

指针数组.数组指针.函数指针.指针函数总结 2014-11-11 指针数组 && 数组指针 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 char *a[5];      //定义一个指针数组, 数组的元素都是char *指针类型.初始化也可以在里面存放字符或字符串.a的类型是char *[5] //若char *a[5]={"red","white","blue","dark",&qu

C语言基础知识----指针数组 &amp;&amp; 数组指针 &amp;&amp; 函数指针 &amp;&amp;指针函数

指针数组 && 数组指针 char (*ptr)[5]; //定义一个指向数组指针ptr,指向包含5个char类型的数组 char *a[5]; //定义一个指针数组a,包含5个char*类型指针 #include <stdio.h> int main(void) {     char *a[5]={"red","white","blue","dark","green"};   

(转)指针函数与函数指针的区别

一.在学习C过程中发现这"指针函数"与"函数指针"容易搞错. 1.指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 类型标识符    *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量. 表示: float *fun(); float *p; p = fun(a);

c语言指针函数与函数指针

例一:函数指针 注意指针函数与函数指针表示方法的不同,千万不要混淆.最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,若果没有括号包括*则是指针函数. 指针函数:当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中. #include "stdio.h" int * GetDate(int wk,int dy); int main() { int wk,dy; do { puts("Ente

分清函数指针和指针函数_

关于指针和数组斩不断理还乱的恩怨还真是说了不少,不过现在应该已经理清了.有了上一讲的基础,本讲的内容相对来说就比较容易理解了. 1.指向函数的指针(函数指针) 来分析这样一个声明,void (*f) ( ); 虽然()的优先级高于*,但由于有括号存在,首先执行的是解引用,所以f是一个指针:接下来执行( ),表明f指向一个函数,这个函数不返回任何值.现在得出结论:f是一个指向不接受参数且不返回任何值的函数的指针,简称函数指针(pointer to function). 对比一下int(*p) [1

函数指针和指针函数用法和区别

前言 函数指针和指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数.指针函数指针.数组指针.指针数组.函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,特别是刚开始学习这门语言的童鞋,估计碰到这些东西就已经要崩溃了,然后好不容易死记硬背下来应付考试或者面试,然后过了几天发现,又是根本不会用,也不知道该在哪些地方用,这就尴尬了.今天这里只讲两个相对简单的,其实上面说那些太复杂的东西也真的很少用,即便是用了理解起来很麻烦,所以莫不如先深刻理解这