c语言-声明一个数组,由用户输入数组长度。不赋初值不报错,赋初值就报错?为什么

问题描述

声明一个数组,由用户输入数组长度。不赋初值不报错,赋初值就报错?为什么
基本上,代码如下:

#include<stdio.h> int main(){  int num = 0;    printf(""输入数组长度:"");    scanf(""%d""&num);    int arr[num]; //编译不报错    //int arr[num] = {0};//编译报错    return 0;}

解决方案

因为C语言中的数组大小是固定的,定义的时候必须要给一个常量值,不能是变量。
这个简单例子:http://c.biancheng.net/cpp/html/2748.html

解决方案二:
一般来讲,不能这么做的,必须指定数组的大小。但是测试中发现,堆栈中的数组大小,的确是在运行的时候确定的。

解决方案三:
为什么赋值会报错呢,因为编译的时候编译器只知道你申请的是num(0)个啊,而你输入的时候那是运行时,编译器在编译的时候会有检查,结果发现你给没有的东西赋值初始化(0个嘛),肯定报错了。你把int初始化为1应该就不会错了
想想我上学那时候也是这么写错,哈哈。想我需要用到几个就申请几个,其实你不必要那么节约的,很多时候如果是用基本的数据类型来解决问题的话都是会有冗余。如果用到数组,你先多申请点用吧,没必要因为这个小细节去浪费学习其他知识的机会

解决方案四:
你什么编译器
int arr[num],这种声明不行,必须是常量num

int arr[num] = {0},这个报错,也是num必须为常量,并且不能分配0个大小元素的数组,num初始是0

解决方案五:
C语言中的数组大小是固定的,定义的时候不能是变量

解决方案六:
想法很好,但是不支持这样写int arr[num]

解决方案七:
C语言中的数组大小是固定的,定义的时候必须要给一个常量值,不能是变量。

解决方案八:
你可以先#define num 20
然后再从键盘键入一个数。当然了不能比这个20大

解决方案九:
数组不能用变量啊,只能是常量

解决方案十:
数组不能用变量啊,只能是常量

时间: 2024-05-16 11:14:09

c语言-声明一个数组,由用户输入数组长度。不赋初值不报错,赋初值就报错?为什么的相关文章

Go语言声明一个多行字符串的变量_Golang

Go如何声明一个多行字符串的变量?使用 ` 来包含即可. package main import ( "fmt" ) func main() { str := `hello world v2.0` fmt.Println(str) } Demo:http://play.golang.org/p/BOL8_SwQ0D 以上所述就是本文的全部内容了,希望大家能够喜欢. 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索

c语言-编写一个程序,打印输入中的单词长度的直方图。垂直方图。

问题描述 编写一个程序,打印输入中的单词长度的直方图.垂直方图. 直方图是如何理解????求教这道题~~ 这道题目是书上的!有没有懂的大神.给讲解啊. 解决方案 问题是怎么解决的? 我想到的就是算好格式用printf()一行行的输入,最后拼成直方图.

一个用户输入问题

问题描述 一个加法,用户输入不能超过99,一但超过,只取前两位显示以及相加例如:100+100显示:?10?1020描述:当输入100的第三位("0")时,等于回车等待输入第二个数字 解决方案 解决方案二:"以及相加"后面的没看懂命题解决方案三:很简单啊,按字符输入,程序计数,判断是数字还是操作符.字符数超过2了,就忽略输入字符,继续下面的流程.解决方案四:你用个除法吧,int型的比如125取值的时候用intnum=125/10;如果三位了就这样四位的话/100一次

PHP开发不能违背的安全规则 过滤用户输入_php技巧

作为最基本的防范你需要注意你的外部提交,做好第一面安全机制处理防火墙. 规则 1:绝不要信任外部数据或输入 关于Web应用程序安全性,必须认识到的第一件事是不应该信任外部数据.外部数据(outside data) 包括不是由程序员在PHP代码中直接输入的任何数据.在采取措施确保安全之前,来自任何其他来源(比如 GET 变量.表单 POST.数据库.配置文件.会话变量或 cookie)的任何数据都是不可信任的. 例如,下面的数据元素可以被认为是安全的,因为它们是在PHP中设置的. 复制代码 代码如

numbers-如何让用户输入一个数字,然后分辨是比array里面的数字大还是小

问题描述 如何让用户输入一个数字,然后分辨是比array里面的数字大还是小 import java.util.Scanner; public class Arrays13 { public static void main(String[] args) { Scanner reader = new Scanner(System.in); int number; int[] numbersArray = new int[]{11,8,4,9,22,30,24,23,35,0}; System.ou

中文字符-如何用C语言编写一个简单的输入法程序,要求可以输入汉字。

问题描述 如何用C语言编写一个简单的输入法程序,要求可以输入汉字. 不太清楚汉字在计算机中是如何存储的,想知道例如微软的智能ABC以及搜狗输入法是怎样实现拼音拼写下的汉字输入. 解决方案 首先要有一个汉字的编码库,比如GB2312编写的是拼音输入法的话,还要建立一个拼音与汉字对应的数据库然后根据用户输入的拼音,提示出对应的汉字(汉字的优先顺序由数据库决定,同时还可以学习该用户的使用习惯)如果输入法还支持智能联想输入的话,还要加入词库(也有优先级),这样可以根据前一个字来推断出下一个可能的字 解决

&amp;amp;lt;C++&amp;amp;gt;事先不知道有多少个字符,用户输入任意个字符放入动态字符数组中。

问题描述 <C++>事先不知道有多少个字符,用户输入任意个字符放入动态字符数组中. 目前我的问题是如何在while循环中跳出,尝试了很多方法但是还是没用.求解. 解决方案 应该必须在while里面定义一个跳出的条件,比如输入一个换行符(按回车),或者某个特定字符和符号. 解决方案二: while(ch= getc() != '[特定字符]'){} 直到获取到特定字符为止,跳出循环. 解决方案三: https://code.csdn.net/snippets/480218 解决方案四: http

c语言-关于数组问题,定义一定长度数组,如何输入-1初始化结束

问题描述 关于数组问题,定义一定长度数组,如何输入-1初始化结束 如图第4题,如何输入-1初始化结束? 关于数组问题,定义一定长度数组,如何输入-1初始化结束 解决方案 如果用户输入有效长度为n,a[n十1]='\0'就可以了 解决方案二: 自己根据输入来判断,然后当是-1的时候,数组就不在保存新的数据,然后开始后面的逻辑 解决方案三: 用一个数表示数组实际输入的元素个数 遇到-1 结束输入(超过50也结束) 然后,就不用考虑输入的事情了,干活吧

c语言-C语言插入一个数字到数组中,然后排序 麻烦各位解答一下 看代码

问题描述 C语言插入一个数字到数组中,然后排序 麻烦各位解答一下 看代码 int i,j,temp; int count[9]; printf("请输入数值:n"); for(i=1;i<=8;i++) { printf("count[%d]=",i); scanf("%d",&count[i]); } for(i=1;i<=8;i++) { for(j=i+1;j<=8;j++) { if(count[j]>co