Tag: 数组

C ++数组分配错误:无效的数组赋值

我不是C ++程序员,所以我需要一些数组帮助。 我需要为某些结构分配一个字符数组,例如 struct myStructure { char message[4096]; }; string myStr = “hello”; // I need to create {‘h’, ‘e’, ‘l’, ‘l’, ‘o’} char hello[4096]; hello[4096] = 0; memcpy(hello, myStr.c_str(), myStr.size()); myStructure mStr; mStr.message = hello; 我收到error: invalid array assignment 如果mStr.message和hello具有相同的数据类型,为什么它不起作用?

使用C ++方式对结构和数组进行别名

这是我的另一个问题的 C ++后续 在ISO C之前的旧时代,以下代码会让人感到惊讶: struct Point { double x; double y; double z; }; double dist(struct Point *p1, struct Point *p2) { double d2 = 0; double *coord1 = &p1->x; double *coord2 = &p2->x; int i; for (i=0; i<3; i++) { double d = coord2[i] – coord1[i]; // THE problem d2 += d * […]

数组的元素是否保证从较低地址存储到较高地址?

假设我有以下数组: int list[3]={2,8,9}; printf(“%p,%p,%p”,(void*)&list[0],(void*)&list[1],(void*)&list[2]); 是否始终保证&list [0] <&list [1] <&list [2] ? 我曾经认为使用C时它是一个严格而快速的规则,但现在必须非常肯定它作为一个OP只是在我回答关于endianness问题时问我这个问题 小端或大端 让我第二个想法的是stacks can grow up or down我不是很确定,所以你的严谨答案是值得赞赏的。谢谢。

可以在printf中使用指向字符串的指针吗?

我想的是: #include #include #include int main(void) { //test pointer to string char s[50]; char *ptr=s; printf(“\nEnter string (s): “); fgets(s, 50, stdin); printf(“S: %s\nPTR: %s\n”, s, *ptr); system(“PAUSE”); return 0; } 或者我应该使用带*(s + i)的for循环和格式说明符%c? 这是通过指针和简单的printf打印字符串的唯一可能方法吗? 更新:printf使用数组的第一个元素的地址进行操作,所以当我使用* ptr时,我实际上是使用第一个元素而不是它的地址。 谢谢。

C中的硬编码字节数组

我正在调试网络应用程序。 我必须模拟一些交换的数据才能使应用程序正常工作。 在C ++中,你可以做类似的事情 char* myArray = { 0x00, 0x11, 0x22 }; 但是,我似乎无法找到这种语法的C等价物。 基本上我只是想用硬编码值填充数组。

char * argv 是什么意思?

我是C编程的新手,我遇到了一个问题。 如果复杂的声明,我发现了这一点 int *daytab[13]; // daytab is an array of 13 pointers to int 这意味着daytab是数组的名称,数组的名称指向数组的第一个元素。 数组名称与daytab++等指针操作不兼容(如果我错了,请纠正我)。 但我发现这段代码是用Dennis Ritchie编写的 main(int argc, char * argv[]) { while( –argc > 0 ) printf(“%s%s”,*++argv,(argc>1) > ” ” : “”); printf(“\n”); return 0; } 他们如何操纵argv ? 它不是数组名称吗?

指针具有二维数组

请考虑以下代码 #include #define ROW_SIZE 2 #define COL_SIZE 2 int main() { int a[ROW_SIZE][COL_SIZE]={{1,2},{3,4}}; // Base address:Pointer to the first element a 1D array printf(“Base address of array:%p\n”,a); //The value at the base address: should be the address of 1st 1D array printf(“Value at the Base address:%p\n”,*a); return 0; } 获得的产出: Sample Output: Base address of […]

如何在C中的4维数组中声明和初始化

我对编程比较陌生,我需要输入一个4维数组,我几乎无法绕过它。 那么,让我们从一个简单的三维数组开始,每个元素都是2个元素: int arr[2][2][2] = { { {1, 2} {3, 4} //redline on “{” } { //redline on “{” {5, 6} {7, 8} } }; VS-2012在“3”之前勾选“{”,并表示期待“}”。 我怎样才能以整洁的格式输入数组? 有4个维度会使它更复杂,我需要能够清楚地看到数据。 此外,我将在我的数组中有大量的零,在每个arr [n] [n]将为0的情况下,所以我想知道我是否可以使初始化更简单一些。 我的数组将是该类型 int arr[7][7][15][2] 或者我最好使用struct而不是? 提前致谢!

C指针和数组:赋值使得整数指针没有强制转换

我在使用C中的指针和数组时遇到了一些问题。这是代码: #include int *ap; int a[5]={41,42,43,44,45}; int x; int main() { ap = a[4]; x = *ap; printf(“%d”,x); return 0; } 当我编译并运行代码时,我收到此警告: [警告]赋值使得整数指针没有强制转换[默认启用] 对于第9行(ap = a [4];)并且终端崩溃。 如果我将第9行更改为不包含某个位置(ap = a;),我不会收到任何警告并且它有效。 为什么会这样? 我觉得答案很明显,但我看不出来。

c中数组中的峰值元素

我得到了一个整数数组。 我必须在其中找到一个峰值元素。 如果数组元素不小于其邻居,则它是峰值。 对于角落元素,仅考虑一个邻居。 例如: 对于输入数组{10, 20, 15, 2, 23, 90, 67} ,有两个峰值元素:20和90.我需要返回任何一个峰值元素。 我尝试的解决方案是arrays的线性扫描,我发现了一个峰值元素。 该方法的最坏情况时间复杂度为O(n)。 我们能否在最差时间复杂度中找到比O(n)更好的峰值元素?