小编aka*_*ash的帖子

char*argv []是什么意思?

我是C编程的新手,我遇到了一个问题.
如果复杂的声明,我发现了这一点

int *daytab[13]; // daytab is an array of 13 pointers to int
Run Code Online (Sandbox Code Playgroud)

这意味着daytab是数组的名称,数组的名称指向数组的第一个元素.数组名称与像daytab++etc等指针操作不兼容(如果我错了,请纠正我).

但我发现这段代码是用Dennis Ritchie编写的

main(int argc, char * argv[]) {
    while( --argc > 0 )                    
        printf("%s%s",*++argv,(argc>1) > " " : "");

    printf("\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

他们怎么操纵argv?它不是数组名称吗?

c arrays pointers kernighan-and-ritchie

13
推荐指数
3
解决办法
2万
查看次数

联合中的填充是否存在

大家好,
我想知道union是否使用填充?
由于union的大小是最大的数据成员大小,最后是否可以填充?

c struct padding unions

9
推荐指数
2
解决办法
4599
查看次数

多边形的交点

给出了两个多边形.如何确定一个多边形是在另一个多边形的内部,外部还是相交?多边形可以是凹面或凸面.

c algorithm polygons

7
推荐指数
1
解决办法
1万
查看次数

找到5个元素的中位数

在最近的微软采访中提出了以下问题

给出一个大小为5的未排序数组.找到中位数需要多少次最小比较?然后他扩大了它的大小n.

根据我的5个元素的解决方案是6

1) use 3 comparisons to arrange elements in array such that a[1]<a[2] , a[4]<a[5] and a[1]<a[4]
a) compare a[1] and a[2] and swap if necessary
b) compare a[4] and a[5] and swap if necessary 
c) compare a[1] and a[4].if a[4] is smaller than a[1] , then swap a[1] wid a[4] and a[2] wid a[5]
2)if a[3]>a[2].if a[2]<a[4] median value = min(a[3],a[4]) else median value=min(a[2],a[5]) 
3)if a[3]<a[2].if a[3]>a[4] median value = min(a[3],a[5]) else median value=min(a[2],a[4]) 
Run Code Online (Sandbox Code Playgroud)

这可以扩展到n个元素.如果不是,除了quickselect之外,我们如何在O(n)中找到n个元素的中位数

arrays algorithm median

7
推荐指数
1
解决办法
2911
查看次数

O(n)中各点的绝对距离

我陷入了困境.问题的一部分需要计算各点的点的绝对距离之和.| x - x1 | + | x - x2 | + | x - x3 | + | x - x4 | ....

我必须在每个点的O(n)中计算这个距离,同时在数组中迭代,例如:

array = {3,5,4,7,5}
与先前点的距离之和

dis[0] = 0;
dis[1] = |3-5| = 2
dis[2] = |3-4| + |5-4| = 2
dis[3] = |3-7| + |5-7| + |4-7| = 9
dis[4] = |3-5| + |5-5| + |4-5| + |7-5| = 5
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议算法这样做吗?将理解小于O(n ^ 2)的算法(不一定是O(n)).

代码为O(n ^ 2)

REP(i,n){
   LL ans = 0;
   for(int j=0;j<i;j++)
      ans= ans + …
Run Code Online (Sandbox Code Playgroud)

c algorithm graph distance dynamic-programming

7
推荐指数
1
解决办法
261
查看次数

两个排序数组中最近的对总和

鉴于整数两个排序阵列,a并且b,和一个整数c,我一定要找到i,j这样的:

a[i] + b[j] <= c
Run Code Online (Sandbox Code Playgroud)

并且a[i] + b[j]尽可能大.

我能想到的最好的解决方案是在O(n log n)时间内,从第一个数组获取每个整数并找到" c-a[i]" 的下限.
任何人都可以建议我更好的方法(可能在O(n)时间)?

c arrays algorithm

5
推荐指数
1
解决办法
1424
查看次数

struct node*head和struct node**head之间有什么区别?

我正在尝试对链表进行排序.我很困惑何时使用struct node*head以及何时使用struct node **head,可以使用它们来完成实现.

我什么时候应该使用:

void sortedinsert(struct node **head)
Run Code Online (Sandbox Code Playgroud)

我什么时候应该使用:

void sortedinsert(struct node *head)
Run Code Online (Sandbox Code Playgroud)

c pointers linked-list

5
推荐指数
2
解决办法
2万
查看次数

匿名工会和正常工会

任何人都可以提一下普通联盟(或结构)之间的区别吗?我刚刚找到一个:
函数无法在匿名联合中定义.

c c++ struct unions

5
推荐指数
1
解决办法
1120
查看次数

printf仅提供警告

任何人都可以告诉我为什么包括stdio.h仍然使用该printf功能只在gcc上发出警告?

警告:内置函数'printf'的不兼容隐式声明

相反,这应该是一个编译错误,因为我们包括一个未声明的函数.

这与链接程序有关吗?请详细说明.

c printf warnings stdio

4
推荐指数
2
解决办法
2556
查看次数

任何人都可以解释输出

#define power(a) #a
  int main()
  {
    printf("%d",*power(432));
     return 0;
  }
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释o/p ??
o/p是

52

c macros printf output

4
推荐指数
1
解决办法
171
查看次数