数组初始化后还能不能修改,定义的指针数组初始化后,可以输入修改吗
数组初始化后还能不能修改,定义的指针数组初始化后,可以输入修改吗详细介绍
本文目录一览: lua 初始化数组后还可以改变其中的值吗
可以,通过下标改变
没问题,可以的
可以的经常这样用
lua只有表的概念,随时可以修改
定义的指针数组初始化后,可以输入修改吗
看你如何定义和初始化。
你最好给出例子,否则要无的放矢地开课了。
下面先不谈数组,只谈变量:
1、指针常量
如果在定义指针变量时候,指针变量前用const修饰,被定义的指针变量就变成了一个指针类型的常变量,指针类型的常变量简称为指针常量。
声明和初始化:
数据类型 * const 指针变量=变量名;
修饰符const与指针变量紧邻,说明指针变量不允许修改,既然指针变量的值不能修改,所以一定要在定义的时候给定初值(指向一个确定存在的地方)
char * const p="ABCDEF";
p=NULL;//错误,指针常量不允许再改变
p="1234";//错误
p=(char *)q;//错误
*p='B'; //正确
2、常量指针
如果在定义指针变量的时候,数据类型前用const修饰,被定义的指针变量就是指向常量的指针变量,指向常量的指针变量称为常量指针,
声明和初始化:
const 数据类型 *指针变量=变量名;
或者 数据类型 const * 指针变量=变量名;
定义一个常量指针后,指针指向的值就不能被改变,即不能通过指针变量直接更改指针指向的值
const char *P="ABCDEF";
*P='1';//错误,不可更改指针指向的值
p[1]='1';//错误
p=NULL;//正确
3、常指针常量
声明和初始化:
const 数据类型 * const 指针变量=变量名;
数据类型 const *const 指针变量=变量名;
指针不能改变,指针指向的值也不能改变
char *q;
const char * const p="ABCDEF";//定义了一个常量常指针
q=p;//错误,不允许一个常指针赋值给非常指针
p=q;//错误,不允许改指针常量的值
*p='1';//错误,不允许改指针指向的值,
p[1]='1';//错误,
p=NULL;//错误,
数组初始化后可以改吗?怎么改?
如图
java中的数组能够在定以后改变长度吗
不可以。
因为Java中的数组长度是不可变的,数组对象的length属性是常量。当然这并不意味着没有解决办法。如果你的确需要数组的容量不断变化,那最好使用ArrayList。如果数组的长度的调整并不频繁,只是偶尔需求,可以使用Arrays.copyOf来“调整数组的长度”,这里的调整长度并不和我开始的回答“数组长度是不可变的”冲突,因为这个方法是new一个更大的数组,把旧数组元素拷贝进去,然会返回给你的。
源代码:(byte数组版本)
public static byte[] copyOf(byte[] original, int newLength) { byte[] copy = new byte[newLength]; System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; }
不可以。java中数组是固定长度的一点长度确定就不可以在此修改重新指向新的内存除外。如果不确定长度可以使用arraylist
java中的数组长度确定之后就不能改了,所有的表面上改变数组长度的方法都是在新建一个更长长度的新数组来存储数据的
在Java中,数组不能动态重设大小。
一个可替代方法是使用java.util.ArrayList (或者java.util.Vector)代替使用原始数组(array)。
另一种解决方案是用一个不同大小的数组重设数组,将旧数组内容拷贝到新的数组。
不能,可以创建一个新数组来改变
System.arraycopy(src, srcPos, dest, destPos, length);
java中数组的长度不可以改变。
java中的数组的定义就是相同类型,固定长度的一组数据,一旦被初始化,长度不可更改。如果对需要用的数组的长度不确定,有两种解决办法:
第一种是在数组初始化的时候长度申请的足够大,这样做会造成内存空间的浪费,一般不推荐使用。
第二种是用java中提供的集合的方式存储数据,如List,Set和Map类型的对象存储数据,一方面这些类型的对象的长度都是动态增长的,另一方面这些类中提供了很多便于操作数据的方法,因此在对所需存储数据的多少不确定的时候,第二种方法比第一种方法更优秀。
怎样将java 数组长度减1
数组初始化时的长度定了以后是不能改的!!!!1
要实现你的功能,可以用NEW一个新的数组,长度为之前的长度减1,然后再循环赋值.
数组的长度初始化后是不能修改的。
要实现你的功能,可以用NEW一个新的数组,长度为之前的长度减1,然后再循环将你这个数组的值赋给新建的。要Demo 就叫我
用ArrayList();
然后remove();
size会自己减的
用java单纯的数组的话是不能减的,因为Arrays必须中的元素个数是固定的.
你把需求说清楚点
如果楼主是用的类似String[] array=new String[10];方式创建的数组的话,数组array一经创建,大小无法改变,只能改变元素的值,比如清空某一位元素的值就达到删除目的。
若想使数组的大小变化,可参见一楼的回答,用集合的实现类ArrayList,将要删除的元素调用remove()去掉,这个类目前在java编程中用的非常普遍。.size()方法得到ArrayList实例中非空元素的个数,不是这个ArrayList的大小。
C语言数组不能先定义再初始化,那我要修改怎么做
都是有了分配好的变量再初始化的啊
例
变量类型 变量名 = 初始值;
你要修改数组内容的话,用array[n]就可以修改。你要修改数组的长度,就用C++的vector代替内部数组,它们的基本操作相同,只是vector可以修改长度。
关于数组初始化
你这个是错误的语法呗,还能有什么原因
定义时可以赋值。单独用strcpy()
对数组赋值的原因:定义一个数组时,数组获取内存中的一块区域,这个区域可能以前被用,内存中的值是不确定的,所以数组的值也是不确定的。
对数组赋值的目的:让数组的值是我们需要的确定的值。
问题一:没有必要对数组初始化,因为gets已经初始化过了。只要值是我们想要的就行。
问题二:编译器要求的
char a[10]= "i love you"; // 正确
char a[10];
a[10]="i love you"; // 错误,编译器规定的
strcpy(a,"i love you"); // 正确,一个字符一个字符赋值的。
char *a;
a="i love you"; // 正确,但是不能改变"i love you"的值
// 字符串是常量,放在常量区域,只能读,不能修改,a是指向常量区域的首地址
在主函数中定义一个int型4行5列的数组并初始化,然后调用print_array()、change_values()来输出、修改数组
#include
#include
#include
int main()
{
int a[4][5]={0};
void change_values(int *p, int n);
void print_array(int (*p)[5],int m);
printf("修改前,二维数组各行各列元素:\n");
print_array(a, 4);
change_values((int *)a, 20);
//调用change_values函数修改数组元素的值
printf("修改后,二维数组各行各列元素:\n");
print_array(a, 4);
return 0;
}
//函数change_values功能:产生1-100之间的随机整数修改数组各元素的值
//形参:p是数组的首地址,n是数组元素个数
void change_values(int *p, int n)
{
srand(time(0));
//代码段1
for(int nIndex = 0; nIndex < n; nIndex++)
p[nIndex] = rand() % 100;
}
//函数print_array功能:输出二维数组各行各列元素的值
//形参:p是数组的首行地址,m是数组的行数(列数为5,不必重复)
void print_array(int (*p)[5],int m)
{
int i,j;
//代码段2
for(i = 0; i < m; i++)
{
for(j = 0; j < 5; j++)
printf("%d ", p[i][j]);
printf("\n");
}
printf("\n");
}
在C语言中 怎么给已初始化好的数组重新赋值 unsigned int a[4]={1,2,3,4,5};
要一个个的赋值a[0]=5;a[1]=4;a[2]=3;a[3]=2;你也可以用for循环来做
兄弟 你还研究这个啊
如果都使用一样的值,则可以用memset函数,全部清成一样的如果是有规律的,则用while循环,或者for循环复制如果没有任何规律,就只能一个一个赋值了~~~~