精华内容
下载资源
问答
  • 今天1024,先祝大家程序员节快乐,以后成为了程序员可不要天天加班哟~今天呢,笔者就来教你一招,如何计算函数中数组参数的大小?先考虑下面的C ++程序:输出:40 8上面的输出是针对整数大小为4个字节且指针大小为8...

    今天1024,先祝大家程序员节快乐,以后成为了程序员可不要天天加班哟~今天呢,笔者就来教你一招,如何计算函数中数组参数的大小?

    0b51340c150e8d858ef4c8f8b24fdac9.png

    先考虑下面的C ++程序:

    2effd5e371c8ee7f77d64158683c1ec5.png

    输出:

    40 8

    上面的输出是针对整数大小为4个字节且指针大小为8个字节的机器的。

    COUT主要打印40内语句,COUT在findSize打印8的原因是,数组总是传递函数指针,即findSize(INT ARR [])和findSize(INT * ARR)平均完全相同的事情。因此,findSize()中的cout语句打印指针的大小。

    如何在函数中找到数组的大小?

    我们可以传递“对数组的引用”。

    9d18391893e672dc7b0f3db16a4bc2d9.png

    输出:

    40 40

    上面的程序看起来不好,因为我们已经硬编码了数组参数的大小。使用C ++中的模板,我们可以做得更好。

    a63a4488243b98d3726beabf6b8033ac.png

    输出:

    40 40

    我们也可以创建一个通用函数:

    7f4754b132d892a4adfd5b343e3c5724.png

    输出:

    40 40

    80 80

    现在,下一步是打印动态分配的数组的大小。这是你的专人!我给你一个提示。

    acbd3f51fa7e690e46f9f241aec08204.png

    剩下的就交给你自己了!希望能够帮到你哦~

    另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!

    编程学习书籍分享:

    f05fb7abff8066869b8384c519a3487e.png

    编程学习视频分享:

    f221480796ed4328abdc248255c6abbd.png

    分享(源码、项目实战视频、项目笔记,基础入门教程)

    欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

    C语言C++编程学习交流圈子,点击下方【了解更多】获取更多学习资料帮助你学习成长哦~

    展开全文
  • 数组大小

    2017-12-30 17:43:32
    老师从刚开始学是就叫我们要注意数组大小,但是我们学了近1学期了,我还是因为数组开小了败在了这上面。我这76题看了又看,看了6节课。才看出来。这一题我找了老师看了3节看,了2节看,同学看了2节看。终于在第六...

    老师从刚开始学是就叫我们要注意数组大小,但是我们学了近1学期了,我还是因为数组开小了败在了这上面。我这76题看了又看,看了6节课。才看出来。这一题我找了老师看了3节看,打了2节看,同学看了2节看。终于在第六节课看了出来,是数组开小了。这是高中的大佬帮我看出来的。开始我完全没想到那一题可以全部是插入所以我的程序是

    #include<bits/stdc++.h>
    using namespace std;	
    int n,a[110],l,x,y;
    int main()
    {
    
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	 cin>>a[i];
    	cin>>l;
    	for(int i=1;i<=l;i++)
    	{
    		cin>>x;
    		if(x==1)
    		{
    		 cin>>y;
    	     cout<<a[y]<<endl;
    	    }
    		if(x==2)
    		{
    			int s;
    			cin>>y>>s;
    			for(int j=n;j>=y+1;j--)
    			 a[j+1]=a[j];
    			a[y+1]=s;
    			n++;
    		}
    		if(x==3)
    		{
    			cin>>y;
    			for(int j=y;j<n;j++)
    			 a[j]=a[j+1];
    			n--;
    		}
    		if(x==4)
    		{
    			cin>>y;
    			int m=0;
    			for(int j=1;j<=n;j++)
    			{
    				if(a[j]==y)
    				{
    					m++;
    					cout<<j<<endl;
    					break;
    				}
    			}
    			if(m==0) cout<<"-1"<<endl;
    		}
    	}
    	return 0;
    }
    这程序没错,我和老师看了两节看,啥问题也没有。我那时很无奈地去问了大佬,大佬5分钟看出了问题

    仅因为没考虑周全,数组开小了

    #include<bits/stdc++.h>
    using namespace std;	
    int n,a[11000],l,x,y;
    int main()
    {
    
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	 cin>>a[i];
    	cin>>l;
    	for(int i=1;i<=l;i++)
    	{
    		cin>>x;
    		if(x==1)
    		{
    		 cin>>y;
    	     cout<<a[y]<<endl;
    	    }
    		if(x==2)
    		{
    			int s;
    			cin>>y>>s;
    			for(int j=n;j>=y+1;j--)
    			 a[j+1]=a[j];
    			a[y+1]=s;
    			n++;
    		}
    		if(x==3)
    		{
    			cin>>y;
    			for(int j=y;j<n;j++)
    			 a[j]=a[j+1];
    			n--;
    		}
    		if(x==4)
    		{
    			cin>>y;
    			int m=0;
    			for(int j=1;j<=n;j++)
    			{
    				if(a[j]==y)
    				{
    					m++;
    					cout<<j<<endl;
    					break;
    				}
    			}
    			if(m==0) cout<<"-1"<<endl;
    		}
    	}
    	return 0;
    }
    这一改就全对了。我就是90分卡那了
    这就是我悲惨的历史。so我还是要好好看题,思考全面,加油努力


    展开全文
  • 指针3 该项目从客户端扫描数组大小并将其按地址传递给函数,然后以同一用户的身份扫描该数组的值*并打印回最大数和最小数
  • 数组大小需要随时改变的时候,对于静态数组,我们需要在main函数下去修改数组大小,这样反复修改很麻烦,动态数组(malloc)使得数组可以随意改变, 静态数组——在栈上申请的内存空间 动态数组——在堆上申请...

    一般情况下,我们习惯性的将数组定义为静态数组,例如int arr[3][6];
    当数组大小需要随时改变的时候,对于静态数组,我们需要在main函数下去修改数组的大小,这样反复修改很麻烦,动态数组(malloc)使得数组可以随意改变,
    静态数组——在栈上申请的内存空间
    动态数组——在堆上申请的内存空间,堆上的空间,在C语言中 ,内存空间由程序 员按需申请,必须由程序员主动释放,如果不释放,会造成内存泄露的问题。
    例如;


    int n=10;
    int **mem=(int**)malloc(sizeof(int*)*n)//表示mem数组申请了十个内存空间,内容为十个指针(int*),然后给每个(int*)申请空间

    这里写图片描述


    一:直角三角形

    #include <stdio.h>
    #include<stdlib.h>
    #include<malloc.h>
    #include <assert.h>
    void show_yanghui(int n)
    {
        assert(n>0);
        int **mem = (int **)malloc(sizeof(int*)*n);
        if (mem==NULL)//判断是否申请内存成功
        {
            return;
        }
        int i = 0;
        for (i = 0; i < n;i++)
        {
            mem[i] = (int*)malloc(sizeof(int)*n);
        }
    
        //code
        int j = 0;
        for (i = 0; i < n; i++)
        {
            for (j = 0; j <= i; j++)
            {
                if (j == 0||i==j)
                {
                    mem[i][j] = 1;
                }
            }
        }
    
        for (i = 2; i < n;i++)
        {
            for (j = 1; j < i; j++)
            {
                mem[i][j] = mem[i - 1][j - 1] + mem[i - 1][j];
            }
        }
    
        for (i = 0; i < n; i++)
        {
            for (j = 0; j <= i; j++)
            {
                printf("%d ", mem[i][j]);
            }
            printf("\n");
        }
        //释放内存空间
        for (i = 0; i < n; i++)
        {
            free(mem[i]);
        }
        free(mem);
    }
    int main()
    {
        printf("Please enter :");
        int n = 0;
        scanf("%d", &n);
        show_yanghui(n);
        system("pause");
    }

    这里写图片描述


    二:等腰三角形

    #include <stdio.h>
    #include<stdlib.h>
    #include<malloc.h>
    #include <assert.h>
    void show_yanghui(int n)
    {
        assert(n>0);
        int **mem = (int **)malloc(sizeof(int*)*n);
        if (mem==NULL)//判断是否申请内存成功
        {
            return;
        }
        int i = 0;
        for (i = 0; i < n;i++)
        {
            mem[i] = (int*)malloc(sizeof(int)*n);
        }
    
        //code
        int j = 0;
        for (i = 0; i < n; i++)
        {
            for (j = 0; j <= i; j++)
            {
                if (j == 0||i==j)
                {
                    mem[i][j] = 1;
                }
            }
        }
    
        for (i = 2; i < n;i++)
        {
            for (j = 1; j < i; j++)
            {
                mem[i][j] = mem[i - 1][j - 1] + mem[i - 1][j];
            }
        }
    
        for (i = 0; i < n; i++)
        {
            int k = 0;
            for(; k < n-1-i; k++)
            {
                printf("%5c",' ');
            }
            for (j = 0; j <= i; j++)
            {
                printf("%5d%5c ",mem[i][j],' ');
            }
            printf("\n");
        }
    
        //释放内存空间
        for (i = 0; i < n; i++)
        {
            free(mem[i]);
        }
        free(mem);
    }
    int main()
    {
        printf("Please enter :");
        int n = 0;
        scanf("%d", &n);
        show_yanghui(n);
        system("pause");
    }

    这里写图片描述

    展开全文
  • 柔性数组大小待定的数组 c语言中结构体最后一个元素可以是未知大小数组 如: struct SoftArray { int len; int array[]; //柔性数组,不占用存储空间 }; 柔性数组的使用方法:(创建一个大小指定的数组并...

    柔性数组:大小待定的数组

    • c语言中结构体最后一个元素可以是未知大小的数组
      如:
    struct SoftArray
    {
    	int len;
    	int array[]; //柔性数组,不占用存储空间
    };
    

    柔性数组的使用方法:(创建一个大小指定的数组并赋值打印出来)

    #include<stdio.h>
    #include<stdlib.h>
    
    //柔性数组的使用方法
    struct SoftArray
    {
    	int len;
    	int array[]; //柔性数组,不占用存储空间
    };
    
    struct SoftArray* create_soft_array(int size)
    {
    	struct SoftArray* ret = NULL;
    	if(size > 0)
    	{
    		ret = (struct SoftArray*) malloc(sizeof(struct SoftArray) + sizeof(int)*size);
    
    		ret -> len = size;
    	}
    
    	return ret;
    }
    
    void delete_soft_array(struct SoftArray* sa)
    {
    	free(sa);
    }
    
    void func(struct SoftArray* sa)
    {
    	int i = 0;
    	if(NULL != sa)
    	{
    		for(i = 0; i < sa->len ;i++)
    		{
    			sa->array[i] = i+1;
    		}
    	}
    }
    
    int main(int argc, char const *argv[])
    {
    	int i = 0;
    	struct SoftArray* sa = create_soft_array(10);
    	func(sa);
    
    	for(i = 0;i < sa->len;i++)
    	{
    		printf("%d\n", sa -> array[i]);
    	}
    
    	delete_soft_array(sa);
    
    	return 0;
    }
    

    在这里插入图片描述

    展开全文
  • 今天1024,先祝大家程序员节快乐,以后成为了程序员可不要天天加班哟~今天呢,笔者就来教你一招,如何计算函数中数组参数的大小?先考虑下面的C ++程序:输出:40 8上面的输出是针对整数大小为4个字节且指针大小为8...
  • 贴出我的代码求大神解决一下,一点小麻烦 简单来说就是s2,s3两个数组,s3长一点s2小一点然后我想比较两个数组不同的地方并打印出来,我的代码运行之后每个结果打印出了四遍结果有1024个位置不同,但其实我的s2只有...
  • 只用一个一维数组打印杨辉三角

    千次阅读 2013-03-16 14:28:42
     2)只用一个一维数组,并且数组大小不得大于行数N  3)杨辉三角如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 …… …… 程
  • **定义一个文件输入流,调用read(byte[] b)方法将exercise.txt文件中的所有内容打印出来(byte数组大小限制为5)。
  • 数组

    2021-02-01 11:56:49
    在学习JAVA的过程中,不可避免的要与数组打交道,因为数组对于每一种编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同,在JAVA中数组是用来存储固定大小的同类型数据,下面给大家介绍...
  • /** * C++ 打印 21 内素数表 */ #include <iostream> #include <fstream> using namespace std; const int N = 21; ... 可以开这么大的数组 10 位数字的 数组 */ int main() { ...
  • 今天1024,先祝大家程序员节快乐,以后成为了程序员可不要天天加班哟~今天呢,笔者就来教你一招,如何计算函数中数组参数的大小? 先考虑下面的C ++程序: 输出: 40 8 上面的输出是针对整数大小为4个字节且...
  • 所以,问题是我有一个2D数组(程序处理nD数组),其大小事先是未知的,并且可变数据量需要在一个方向上连接到数组(让我们说我要去很多次电话给np.vstak).每次我连接数据时,我都需要获取数组,沿轴0排序并执行其他操作,...
  • 7、定义一个文件输入流,调用read(byte[] b) 方法将exercise.txt文件中的所有内容打印出来(byte数组大小限制为5,不考虑中文编码问题)。 import java.io.File; import java.io.FileInputStream; import java.io....
  • 数组的遍历 获取最大值最小值 数组的反转 数组的查找 练习 定义方法创建指定大小数组,并添加指定元素 拼接两个数组 感觉数组的运用还是得靠大量的实操练习才能深刻理解,像遍历取大小值和反转查下标这种系统本身...
  • 求作为函数参数传递的数组名的大小: 11. 括号表达式 分析: int xx[3][2] = {(1,2),(3,4),(5,6)}; 实际上等价于: intxx[3][2]={2,4,6}; 内存分析:
  • (byte 数组大小限制为 5)。 * @param args * @throws IOException */ public static void main (String[] args) throws IOException { FileInputStream fis = new FileInputStream( "aaa....
  • 看到每一个元素和前一个元素都是相距int大小的距离数组元素是一个接一个存放的//: C03:ArrayAddresses.cpp // From Thinking in C++, 2nd Edition // Available at http://www.BruceEckel.com // (c) Bruce Eckel ...
  • 头文件内定义了: typedef struct { unsigned char headtag; unsigned int ipacket; unsigned short packetLen; unsigned short checkcode; } tagUDPHead; cpp 文件里面: ...checkcode:2
  • JAVA数组数组的应用

    千次阅读 多人点赞 2017-09-04 17:55:04
    数组大小一旦被定义,不可改变。 在程序中第一次给变量赋值—–变量的初始化。 直接打印数组,打印出的是数组的地址。 打印的内容:[ I @ df6d9f8 [ 表示对象的类型是数组 I 如果这个对象是一个数组或者集合...
  • 但是这就带来了一个问题,如果x=100,那么HashMap的初始大小应该是128.但是100/128=0.78,已经超过默认加载因子的大小了。因此会resize一次,变成256。所以最好的结果还是256。 最后发个参考链接:...
  • java数组 1 申明一个接受数组长度的变量num,用于接受数字个数,放循环外面,只用接收一次 2 申明一个接受数组元素的变量arr[] ,用于接受用户输入的数字,这个接受需要放到循环里面,循环接收 3 arr[i]=in.nextInt(),...
  • L2-数据结构-第02课 数组数组输入两个学生的成绩, 我们可以定义两个变量...一维数组声明:数据类型数组名[大小]声明和定义:数据类型 数组名[大小] = {数组元素}例子:int a[6] = {10, 20, 30, 40,};数组下标012345...
  • Problem 题目描述 SuperBrother在机房里闲着没事干(再对比...洞口都在一个大小为n(n&lt;=1024)的正方形中。这个正方形在一个平面直角坐标系中,左下角为(0,0),右上角为(n-1,n-1)。洞口所在的位置都是整点,就是...
  • java中打印输出数组

    2017-04-13 11:34:00
    import java.util.Arrays; public class ArrayDemo { public static void main(String[] args) { int size = 4; // 数组大小 int[] myList = new int[size];// 定义数组 myList[0] = 5;...
  • 柔性数组

    2020-11-09 15:35:08
    柔性数组数组大小待定的数组 C语言中可以由结构体产生柔性数组 C语言中的结构体的最后一个元素可以是大小未知的数组 struct SoftArray { int len; int array[]; }; //sizeof(struct SoftArray)=? //SoftArray 中...
  • C++中数组作为函数参数如何不用同时传入大小 在C/C++中如果将数组作为参数传入函数通常需要同时传入数组大小, 在使用时总是带着一个尾巴, 总是显得有些赘余. 这是由于C/C++的原生数组实质上只是一个指针而已, 不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,511
精华内容 604
关键字:

数组打大小