在下面的程序中,Here ptr已被声明为指向整数指针的指针,并分配了数组p[]的基址,该数组已被声明为整数指针数组。 假设ptr在ptr递增之前包含地址9016 (假设p的起始地址是9016),并且在ptr++ ,它将包含值9020(假设int占用4个字节)。 所以ptr-p应该输出为4即(9020-9016 = 4)。 但它输出为1。 为什么? #include int main() { static int a[]={0,1,2,3,4}; static int *p[]={a,a+1,a+2,a+3,a+4}; int **ptr=p; ptr++; printf(“%d”,ptr-p); return 0; }
我想我已经在某处读过,在C中取一个枚举值的地址是非法的 (枚举值不是左值;但是,我现在找不到任何关于此的信息)。 这是正确的,如果是的话,为什么? 编辑: 这是一个例子,用上面的“枚举值”来澄清我的意思。 我的意思是取下面的first_value的地址,而不是获取枚举的实际实例的地址: enum myenum { first_value, second_value };
在多处理器编程的艺术中,p215,作者说在C中,你可以从指针“窃取”一点,并使用逐位运算符从单个字中提取一些标志(标记)和指针。 我不知道这是怎么做的,所以一个例子可以帮助我。
在C中:在将结构发送到函数后,如何找到结构数组中的元素数? int main(void) { myStruct array[] = { struct1, struct2, struct3, struct4, struct5, struct6 }; printf(“%d\n”, sizeof(array)); printf(“%d\n”, sizeof(array[0])); f(array); } void f(myStruct* array) { printf(“%d\n”, sizeof(array)); printf(“%d\n”, sizeof(array[0])); } 由于某种原因,main中的printf显示的结果与f中的printf不同。 我需要知道数组中有多少个元素。
我有数组的指针(数组在内存中)。 我可以从指针计算数组的大小吗? 我实际上不知道数组在内存中的位置。 我只得到指针地址(假设9001)使用该地址我必须计算数组大小。 谢谢。
在论坛中C中的负数组上还有其他问题/答案,但我会为32位编译器请求这些答案:如果我们有一个数组定义int test_array[5] = {1,2,3,4,5}; 接下来的语句应该返回test_array[20] , test_array[-2] , test_array[-32764] , test_array[4294967700] (大于32位可以容纳的值), *(a-32764)等 如果索引超出其声明的范围,编译器是否会强制返回任何固定值?
为什么以下程序给出’conversion’ : cannot convert from int[1][1] to int**错误? 我在Windows 7下使用VS2008进行编译。 int main(){ int a[1][1] = {0}; int **p = a; }
以下代码工作正常: #include #include int main() { struct node{ int a, b, c, d, e; }; struct node *ptr = NULL; printf(“Size of pointer ptr is %lu bytes\n”,sizeof (ptr)); printf(“Size of struct node is %lu bytes\n”,sizeof (struct node)); ptr = (struct node*)malloc(sizeof (ptr)); //Line 1 // ptr = (struct node*)malloc(sizeof (struct node)); //Line 2 ptr->a = […]
这是我的代码: #include #include #include void getinfo(unsigned int a, unsigned int b, char **pStr); int main(){ unsigned int len_max = 8; unsigned int current_size = 0; current_size = len_max; char *host, *user; char *pStr = malloc(len_max); if(pStr == NULL){ perror(“\nMemory allocation\n”); return EXIT_FAILURE; } printf(“Inserisci hostname: “); getinfo(len_max, current_size, &pStr); if((host=malloc(strlen(pStr)+1 * sizeof(char))) == NULL) abort(); […]
假设我有一个类似以下的结构…… typedef struct { int WheelCount; double MaxSpeed; } Vehicle; …我有一个这种类型的全局变量(我很清楚全局变量的缺陷,这是一个嵌入式系统,我没有设计,为此他们是一个不幸但必要的邪恶。 )直接或通过指针访问结构的成员是否更快? 即 double LocalSpeed = MyGlobal.MaxSpeed; 要么 double LocalSpeed = pMyGlobal->MaxSpeed; 我的任务之一是简化和修复最近inheritance的嵌入式系统。