Tag: 数组

将int(32位)转换为char(8位)

我有这些定义: int data = uartBaseAddress[UART_DATA_REGISTER / 4]; // data coming from UART RX port char message[20]; // array of 20 chars 现在当我尝试这样做时: message[0] = (char) data; printf(“%x”, message[0]); 它打印(例如): “ffffff9c” 。 当然我只想要最后8位(“9c”),我不明白如何正确地进行从int到char的转换。 编辑:我的意思是:我必须像这样填充数组: data = 0xFFFFFF9c; message[0] = data & 0xFF; — it has to contain only 9c data = 0xFFFFFFde; message[1] = data & […]

自定义shell只接受一个参数

所以我有一个shell的代码: #include #include #define MAX_NUM_ARGS 256 #define SIZE 256 void orders(char *command[SIZE]); int main() { char buffer[SIZE]= “”; //char input_args[MAX_NUM_ARGS]; char **input_args = NULL; int i = 0;// counting variable int blah = 0; printf(“Welcome to the AY shell.\n”); while(1){ //initialize array of strings //first free any prevously allocated memory if (input_args != NULL) { […]

替代嵌套数组(6维),内存间隙保留O(1)访问权限

我正在阅读运行具有不同配置的程序的统计数据。 假设有6种配置( a , b ,…, f )。 配置可能不会线性变化,因此如果您将测量结果视为表格,则表格中可能存在间隙。 问题是关于在内存中构造这些统计数据。 首先想到的是将这些配置读取到动态分配的6深度数组或数组: struct data ******measurements; 现在这很好用。 您的内存开销很小(只有实际分配数据的配置),访问时间为O(1) 。 除了大多数人不喜欢******指针的事实之外,这还有一个缺点,即添加配置意味着向数组添加维度,除非将数组的读/写封装在函数中,否则可能会变得难看。 (写入已被封装以在必要时进行分配,因此实际上这并不是什么大问题)。 想到的另一个想法是使用struct config的映射来使用AVL树或其他东西(我已经拥有,因此没有实现开销)来struct data 。 这解决了扩展配置参数的问题,但减少了对O(log(n))访问时间。 对于O(log(n)) ,测试的数量可能会相当大,从而产生差异。 我的问题是:在这里使用6深度嵌套数组是否合理? 或者有更好的方法吗?

如何在C中shmget和shmat双数组?

我知道2D数组在C中可能很奇怪,而对于malloc,我会这样做: /* This is your 2D array. */ double** matrix; /* The size dimensions of your 2D array. */ int numRows, numCols; /* Used as indexes as in matrix[x][y]; */ int x, y; /* * Get values into numRows and numCols somehow. */ /* Allocate pointer memory for the first dimension of a matrix[][]; */ […]

C / C ++:使用int i ,为什么i 与2 相同?

我才知道这个伎俩。 在C ++中: #include using namespace std; int main() { int i[3]={5,7,11}; cout << 2[i]; return 0; } 在C: #include int main(void) { int i[3]={5,7,11}; printf(“%d”, 2[i]); return 0; } 是的,这些是允许的,两个输出都是11。 为什么我[2]可以表达为2 [i]?

检查C中的数组是否对称

我正在研究一个示例问题,它要求我检查用户输入的数组是否对称。 我已经弄清楚如何通过创建另一个数组,以相反的顺序复制第一个数组,然后检查它们是否相互相等。 如下面的代码所示。 #include int main(void){ #define NUM_ELEMENTS 12 int userArray[NUM_ELEMENTS]; int userArray2[NUM_ELEMENTS]; int i; int tempVal = 0; double sumArray = 0; double aveArray = 0; printf(“Enter 12 interger numbers (each one separated by a space):\n”); for(i = 0; i < NUM_ELEMENTS; i++){ scanf_s("%d", &userArray[i]); } for(i = 0; i = 0; i–){ printf(“%d […]

从一个数组合并两个int数组而不重复

我试图将两个数组合并为一个没有重复但我的代码无法正常工作。 任何人都可以建议如何解决这个问题? void unify(int set_A[], int size_A, int set_B[], int size_B, int set_C[], int size_C) { int i,j,count=0,indx=size_A; for(i=0;i<size_A;i++) { set_C[i]=set_A[i]; } for(i=0;i<size_B;i++) { for(j=0;j<size_A;j++) { if (set_B[i]!=set_C[j]) count++; } if (count==size_A){ set_C[indx]=set_B[i]; indx++; } } } 例: a{3 7 13 8 11 1 4} b{5 7 1 2 3} a_b{3 7 13 8 11 […]

将3D数组作为参数传递给C中的函数

我试图编写一个对3d数组的元素求和的函数,但是它一直说我将3d数组作为参数传递的行存在问题。 我的代码如下: #include int sum3darray(a[][][], size); main() { int check[3][3][3]={ 0 }; int size=3; printf(“The sum is %d\n”,sum3darray(check,size)); } int sum3darray(a[][][],size) { int i,j,k,sum=0; for(i=0;i<size;i++) { for(j=0;j<size;j++) { for(k=0;k<size;k++) { printf("i=%d, j=%d,k=%d, checkijk=%d ",i,j,k,check[i][j][k]); sum+=check[i][j][k]; printf("sum=%d\n", sum); } } } return(sum); } 编译器将第3行和第11行标记为问题。 有人可以帮忙吗?

如何计算C中矩阵行中的元素数量

使用整数数组,Id喜欢首先向用户询问他想要在数组中的行数和列数(让我们称之为x和y)(我知道如何执行此步骤)。 重要的是,当用户输入将存储在矩阵中的值时,将从一行输入读入一行,从第二行输入读入第二行,依此类推。 所以一行输入= 1行。 因此,如果他已经定义了x个列,他应该为第一行输入x个数字,所有这些都在一行上。 如何检查x号码是否确实已输入线路? 如果输入的内容越来越少,我将打印错误消息。 是否有某种命令可以检查1行的大小,以便它可以根据用户定义的x进行检查? 到目前为止我编写的代码涉及简单的步骤,但我对如何实现此检查几乎没有任何想法,以确认用户输入的数量与他最初定义的输入量相同。 非常感谢!

传递数组,指向C中的int

经过多年与Matlab合作,我是C的新成员。 我有一个构造数组的函数,我需要将它返回到main()。 我有arrays与指针的常见问题,并且通过摆弄想出如何做到这一点。 但是这个小提琴给我留下了一个基于以下代码的概念性问题。 #include void array_set(int y_out[2][2]); void int_set_wrong(int y); void int_set_right(int *y); int main (int argc, const char * argv[]) { int y_array[2][2]={{0,0},{0,0}}; int y_int_1 = 0; int y_int_2 = 0; array_set(y_array); int_set_wrong( y_int_1 ); int_set_right( &y_int_2 ); printf(“\nValue array: %d \n”,y_array[0][0]); printf(“Value int wrong: %d \n”,y_int_1); printf(“Value int right: %d \n”,y_int_2); return […]