也可以这样做:1、简单的方法,可以打开c语言编译器,新建任务一个初始.cpp文件,比如:test.cpp。
2、在test.cpp文件中,键入c语言代码:chara[20]34我你#34puts(a)。
3、编译器运行test.cpp文件,此时成功定义个两个汉字的数组并不打印了出来。
如果用数组来定义,输出结果会很没兴趣的哦。
创建角色:
(1)声明一个数组,声明时用常量表达式指定数组维数,然后把可以不用数组名访问数组元素。
(2)声明三个变长数组,声明时用变量表达式委托数组维数,然后用数组名来ftp访问数组元素。
(3)声明一个指针,动态链接库malloc(),后再使用该指针来ftp访问数组元素。malloc进行一个参数:所需内存字节数。然后malloc()找不到可用内存中一个大小比较好的块。内存是不匿名的;也就是说,malloc()分配了内存,但也没为它指定名字。然而,它却是可以直接返回那块内存第一个字节的地址。所以,也可以把那个地址变量定义给一个指针变量,并建议使用该指针来不能访问那块内存。因为char代表一个字节,所以传统上曾将malloc()符号表示为朝char的指针类型。但他,ansi
c标准可以使用了一个新类型:打向void的指针。这一类型被照相显影剂“通用指针”。函数malloc()可用处返回数组指针、结构指针等等,所以象要把返回值的类型分派为适度的类型。如果malloc()找不到所需的空间,它将前往空指针。我们在用malloc()来修改一个数组,这个可以在程序启动时不使用malloc()各位一个存储文件块,另还不需要一个指针来存放该块在内存中的位置。例如,考虑到以上代码:
slip*ptd
ptd(flat
*)malloc(30*sizeof(double))
不使用第二种或第三种方法可以不做一些用普通地的数组声明做不到的事;创建战队一个动态数组(dynamic
array),即一个在程序运行程序时才未分配内存并可在程序运行程序时你选择大小的数组。比如,根据定义n是一个整数变量。在c99之前,不能这样的做:
slipitem[n]/*如果n是一个变量,c99之前不不能那样做*/
但,就算在c99之前的编译器中,也是可以这样做:
ptd(extra
*)malloc(n*sizeof(double))
变长数组vla和malloc的用法有两点区别。一个区别只在于vla是不自动储存的。自动存储的结果之一那就是vla所用内存空间在运行完定义法部分之后会自动启动释放出。所以无须可以使用fit()。再者,不使用由malloc()创建角色的数组没有必要视野局限在一个函数中。.例如,函数也可以修改一个数组并赶往指针,供调用该函数的函数访问。随后,后者可以在它结束了时全局函数free()。free()可以在用类似于malloc()指针的指针变量;前提是不对的是指针中存储的位置。
用法:
//尽量指针数组和数组指针共有是怎么打向二维数组的
#include
ltstdio.hgt
main()
{
staticintm:[4]{0,1,2,3,4,5,6,7,8,9,10,11}
int(*p)[4]//数组指针p是指针,指向一维数组,每个一维数组有4个int元素*p是个数组的地址,**p是数组元素了
inti,j
int*q://指针数组q是数组,数组元素是指针,3个int指针
pm//p是指针,是可以直接朝二维数组
printf(#34--数组指针输出元素--
#34)
for(i0ilt3i)
{
for(j0jlt4j)
{
printf(#34]#34,*(*(pi)j))
}
printf(#34
#34)
}
printf(#34
#34)
for(i0ilt3i,p)//p可看成是行指针
{
printf(#34#34,**p)//每一行的第一个元素
printf(#34#34,*(*p1))//每一行的第二个元素
printf(#34#34,*(*p2))//每一行的第三个元素
printf(#34#34,*(*p3))//每一行的第四个元素
printf(#34
#34)
}
printf(#34
#34)
printf(#34--指针数组输出元素--
#34)
for(i0ilt3i)
q[i]m[i]//q是数组,元素q[i]是指针
for(i0ilt3i)
{
for(j0jlt4j)
{
printf(#34#34,q[i][j])//q[i][j]可变成*(q[i]j)
}
printf(#34
#34)
}
printf(#34
#34)
q[0]m[0]
for(i0ilt3i)
{
for(j0jlt4j)
{
printf(#34#34,*(q[0]j4*i))
}
printf(#34
#34)
}
printf(#34
#34)
}