Tag: 交换

使用指针交换int数组值

我应该使用指针在数组中交换int。 它编译时没有错误或警告并运行,但不会交换整数。 任何的意见都将会有帮助!!! 这是测试人员: #import void swap( int ary[] ); int main( int argc, char*argv[] ) { int ary[] = { 25, 50 }; printf( “The array values are: %i and %i \n”, ary[0], ary[1] ); swap( ary ); printf( “After swaping the values are: %i and %i \n”, ary[0], ary[1] ); return 0; } […]

C – 交换两个相同大小的内存块的最快方法?

交换两个相同大小的非重叠内存区域的最快方法是什么? 说,我需要用(t_Some *b)交换(t_Some *b) 。 考虑到时空权衡,会增加临时空间来提高速度吗? 例如, (char *tmp) vs (int *tmp) ? 我正在寻找便携式解决方案。 原型: void swap_elements_of_array(void* base, size_t size_of_element, int a, int b);

交换两个字符串指针

我必须在C中使用char []并且我想在它们之间进行交换,只需将指针交换到数组而不是一次只有一个char,所以我编写了这段代码: #include void fastSwap (char **i, char **d) { char *t = *d; *d = *i; *i = t; } int main () { char num1[] = “012345678910”; char num2[] = “abcdefghujk”; fastSwap ((char**)&num1,(char**)&num2); printf (“%s\n”,num1); printf (“%s\n”,num2); return 0; } 我得到这个输出(注意最后4个字符) abcdefgh8910 01234567ujk 当我期待: abcdefghujk 012345678910 注意:我正在使用64位Linux系统。

为什么这些交换函数的行为不同?

#include void swap1(int a, int b) { int temp = a; a = b; b = temp; } void swap2(int *a, int *b) { int *temp = a; a = b; b = temp; } void swap3(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } main() { int […]

XOR交换算法中运算符的未定义行为?

void swap(int* a, int* b) { if (a != b) *a ^= *b ^= *a ^= *b; } 如上所述*a ^= *b ^= *a ^= *b只是*a = *a ^ (*b = *b ^ (*a = *a ^ *b))的快捷方式,可以(例如)第二个*a被评估(对于XOR)就在第三个*a被修改之前(由=)? 我是否用C99 / C11 / C ++ 98 / C ++ 11编写它是否重要?

“在不使用第三个变量的情况下交换两个变量的值”中的潜在问题

我最近提出了这种方法来交换两个变量的值而不使用第三个变量。 a^=b^=a^=b 但是当我在不同的编译器上尝试上面的代码时,我得到了不同的结果,一些给出了正确的结果,一些没有。 代码有什么严重错误吗?

交换单链表中的节点

我试图交换两个节点。 例如,如果节点是a和b我正在传递指针 (a-1)->next和(b-1)->next ,它们基本上是节点a和b 。 void swap(struct stack **a,struct stack **b) { struct stack *temp1 = *a, *temp2 = *b, *temp3 = *b; *a = *b; (*b)->next = (temp1)->next; temp2 = temp1; (temp2)->next = temp3->next; } 我究竟做错了什么? 当我在调用函数后尝试打印节点时,它是一个无限循环。 请帮忙。