int main(void)
{
int c[9] = { 0 };
int i=111;
c[i % 10] = 1;
printf("%d",c[i%10]);
}
如果这样会显示写入到c时缓冲区溢出,
但是改成
int main(void)
{
int c[9] = { 0 };
int i=111;
int d;
d=i%10;
c[d] = 1;
printf("%d",c[d]);
}
此时就没有问题了
这个的原理是什么?
代码没问题,编译不过只能说是编译器区别,至少在我的编译器下能编译运行正常。
一、数组定义时,中括号里只能是常量或常量表达式。
二、上面写的对数组元素赋值时使用变量或表达式是可以的。前提表达式返回值必须是整数且不超过数组维度。
C语言的数组排序问题。
简单的末位比较排序,从最后一个数a[i-1]开始和x比较,大于x的向后移一位,比如a[i-1] > x,就将a[i-1]的数值写给a[i],所以第一个空应该添i-1。最后比较到a[4]的时候while循环跳出,这个时候的数据x要回填到a[5]的位置,所以第二个空应该添i++或i+1。所以说答案是:第一个填 i...
c语言数组问题
问一:c语言开辟数组,如果里面存的是整数,那么没有复制之前,数组中默认的值为零,还是乱码。答:C语言声明数组变量时,只分配相应的空间和地址,而不对里面存放的数据初始化。不管是int、float、还是char型等,即里面存的无论是整数、小数还是字符,再没有复赋值之前,数组中默认的值都是乱码,而不...
关于C语言中数组定义问题
(1)在堆栈段中分配内存,由于太大无法分配,所以错误。(2)在数据段中分配内存,数据段可以分配,无错误。(3)数组比(1)需要的内存少,在堆栈段大小范围内,可以分配,无错误 (4)同(3)
c语言数组大小的问题?
C语言中第一维大小是指数组第一维的长度:如下定义一个一维数组:int arr[10];则其长度可以使用sizeof(arr)来求得:printf("长度:%d",sizeof(arr));其结果为:10 二维数组的第一维大小是指数组的行数,第二维是数组的列数:定义一个二维数组:int arr[5][8];则其行数为5,列数为8,其...
C语言数组问题
一个变量2个字节,9个变量18个字节,18化为16进制是12,然后看图
C语言的数组和指针问题,谢谢高手的解答!
总结,问题的关键在于,数组名相当于一个指向于这个数组第一个元素的指针。3)所以,int A[2][3][4]={0};A是一个三维数组,其中A[0]和A[1]都是它的元素,A[0]是第一个元素。所以, A是一个三级指针,指向了这个数组的第一个元素A[0],而A[0]是一3*4的二维数组。而A[0]是一个...
c语言数组问题
答案是:abcbcc 第一个for循环之后,x[3][4] = {"abc", "abc", "abc"} 第二个for循环的时候,&x[0][0]就是第一行第一个元素的地址所以输出abc &x[1][1]就是第二行第二个元素的地址所以输出bc &x[2][2]就是第三行第三个元素的地址所以输出c ...
C语言有关数组的一些疑问,数组可以只有一个元素吗?
AD_num[0] = m1和AD_num = m1是有区别的,前一个是把首个元素赋值为m1,后面AD_num如果是数组名是不能这么赋值的,错误。如果是个指针可以,但是如果m1是个数值编译会有警告。*AD_num=m1是和第一个等价的。数组可以只有一个元素,这个是肯定的。
求C语言二维数组问题。。(30分)
2.数组第一维的大小是2。3.对 4.a[0][0]、a[1][2]、a[1][0]是正确引用。5.int a[2][]={{1,2,3},{4,5,6}};一维可省,二位不可省;int a[2][4]={{1,2,3},{4,5},{6}};越界了,只定义了两行却赋了三行的值;int a[][3]={{1,2,3}{},{1,1}};第一第...
c语言数组问题
代码,利用数组元素地址连续性 include <stdio.h>#define row 3#define clo 4int main(){ int nums[row][clo]={0},*p=&nums[0][0],*ps=&nums[0][0],cnt=0; printf("输入前两行数据:\\n"); while(p<ps+2*clo) scanf("%2d",p++); ps=p; while(p<ps+cl...