在C语言中,数组的下标必须是非负整数。如果需要使用负数作为数组的下标,可以采用以下两种方法: 使用指针和偏移量:可以使用指针来表示数组,然后通过对指针进行偏移来模拟负数下标的访问。例如,可以定义一个指针,将其指向数组的中间元素,然后通过递减偏移来访问前面的元素,以模拟能够使用负数作为下标的效果。 实现自定义的...
C/C++ 从数组负数下标开始 如果我们定义一个长度为n的数组,那么理论上下标的范围为[0,n−1]。 但是实际上,在C/C++中,数组的下标可以是负数,而且是可以通过编译的。 intarr[]={1,2,3,4};intnum=arr[-3]; 这里需要明确,C/C++ 是不会检查下标时候合法。 因为C要追求速度,如果他要检查下标,就需要在...
01 数组的下标可以是负数 C语言中使用数组,一般来说都是这样的: int ary[5] = {1, 2, 3, 4, 5};ary[0] = 10; 语法规定,数组的长度必须是个常量,保证数组所占的内存大小不变。 数组下标从 0 开始,依次往后递增。 于是大部分同学都把它当作了默认的规则。 其实,数组的长度可以是0,叫做柔性数组,目...
指针p指向数组的第三行,p[-1]表示第二行的首元素地址,p[-1][-1]表示第二行首元素的前面一个元素,即第一行最后一个元素(二维数组在内存中也是连续的)。 使用负数作为下标来访问数组,切记内存不要越界,访问的内存一定是存在的,否则会导致程序奔溃。 02数组名可以放在括号中 由于数组和指针在使用上是等价的,...
{inta[] = {1,3,4};int*p = &a[-1];inti =0;for( i =1; i <4; i++) { printf("%d\n", p[i]); } } 因为数组并不检查下表是否越界,下表仅表示偏移, -1就表示第一个元素前面那个元素 例子2 在 头文件 stdarg.h 中,有如下宏定义: ...
数组下标也能是负数 #C语言 #嵌入式开发 #Linux - 嵌入式编程于20241218发布在抖音,已经收获了26.4万个喜欢,来抖音,记录美好生活!
int a[] = {1,3,4};int *p = &a[-1];int i =0;for( i = 1; i <4; i++){ printf("%d\n", p[i]);} } 因为数组并不检查下表是否越界,下表仅表⽰偏移, -1就表⽰第⼀个元素前⾯那个元素 例⼦2 在头⽂件 stdarg.h 中,有如下宏定义:typedef char* list;va_arg #...
C语言数组下标是负数 1#include <iostream>2#include <cstdio>3usingnamespacestd;45intmain(intargc,char*argv[])6{7inta[10];8inti, j, k;9int*p =NULL;1011for(i=0; i<10; i++)12a[i] = i +10;1314printf("Using a...\n");15for(i=0; i<10; i++)16printf("%d", a[i]);17...
C语言中,a[-1] (负数下标)的用途,例子1我们都知道数组下表是从0开始的,假如我们想从1开始,可以这么干:定义一个指针,指向a[-1]这个位置#include<stdio.h>voidmain(){inta[]={1,3,4};int*p=&a[-1];inti=0;for(i=1;i<
C语言数组下标是负数 1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 5 int main(int argc, char *argv[]) 6 { 7 int a[10]; 8 int i, j, k; 9 int *p = NULL; 10 11 for (i=0; i<10; i++) 12 a[i] = i + 10;...