小编cod*_*ict的帖子

解释int(*a)[3]

当使用C中的数组和指针时,人们会很快发现它们并不等同,尽管乍一看似乎是这样.我知道L值和R值的差异.不过,最近我试图找出一个可以与二维数组结合使用的指针类型,即

int foo[2][3];
int (*a)[3] = foo;
Run Code Online (Sandbox Code Playgroud)

不过,我只是不能找出编译器如何"理解"的类型定义,尽管常规运算符优先级规则*[].相反,如果我使用typedef,问题会变得非常简单:

int foo[2][3];
typedef int my_t[3];
my_t *a = foo;
Run Code Online (Sandbox Code Playgroud)

在底线,有人可以回答我关于int (*a)[3]编译器如何读取该术语的问题吗?int a[3]很简单,int *a[3]也很简单.但那么,为什么不int *(a[3])呢?

编辑:当然,而不是"类型转换"我的意思是"typedef"(它只是一个错字).

c c++ arrays types pointers

23
推荐指数
4
解决办法
5353
查看次数

PHP将字符串拆分为整数元素和字符串

我有一个字符串说: Order_num = "0982asdlkj"

我如何将它分成2个变量,使用数字元素,然后将另一个变量与php中的字母元素分开?

数字元素可以是1到4之间的任何长度,并且字母元素填充其余部分以使每个order_num总共10个字符.

我已经找到了php explode函数...但是不知道如何在我的情况下制作它,因为数字的数量介于1和4之间,并且字母在此之后是随机的,因此无法在特定字母处分割.请尽可能具体帮助!

php regex split

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

选择以数字开头的值

在MySQL上,我有一个表,其中包含以数字开头的数据

如何选择仅以数字开头的行?

mysql sql select numbers

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

有没有理由.Net Windows程序员需要再学习C或C++了?

有人可以描述一下C或C++程序员在开发Windows时对.Net编程有什么好处吗?

.net c c++

19
推荐指数
2
解决办法
1032
查看次数

我们如何有效地从阵列中找到第二个最大值?

是否可以通过遍历数组一次从整数数组中找到第二个最大数字?

作为一个例子,我有一个由五个整数组成的数组,我希望从中找到第二个最大数.以下是我在采访中的尝试:

#define MIN -1
int main()
{
    int max=MIN,second_max=MIN;
    int arr[6]={0,1,2,3,4,5};
    for(int i=0;i<5;i++){
        cout<<"::"<<arr[i];
    }
    for(int i=0;i<5;i++){
        if(arr[i]>max){
            second_max=max;
            max=arr[i];          
        }
    }
    cout<<endl<<"Second Max:"<<second_max;
    int i;
    cin>>i;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然而,采访者想出了测试用例int arr[6]={5,4,3,2,1,0};,这使得它无法if第二次进入这种情况.我对面试官说,唯一的办法是解析数组两次(两个for循环).有人有更好的解决方案吗?

c++ arrays algorithm

19
推荐指数
3
解决办法
4万
查看次数

用PHP替换文件内容

我需要一个像preg_replace一样的函数,但我需要它来处理文件/文件内容而不是字符串.

php file-io replace file preg-replace

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

PHP:如何"剪切"我的阵列?

我有一个阵列

Array
(
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 4
    [5] => 5
)
Run Code Online (Sandbox Code Playgroud)

如何删除最新的2个单元格并缩短它?

Array
(
    [0] => 0
    [1] => 1
    [2] => 2
)
Run Code Online (Sandbox Code Playgroud)

谢谢

php arrays

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

全局变量实现

当我写下面的程序时:

档案1:

#include <stdio.h>    
int global;    
void print_global1() {
        printf("%p\n", &global);
}
Run Code Online (Sandbox Code Playgroud)

档案2:

#include <stdio.h>
char global;    
void print_global2() {
        printf("%p\n", &global);
}
Run Code Online (Sandbox Code Playgroud)

档案3:

void print_global1();
void print_global2();
int main()
{
        print_global1();
        print_global2();

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

$ ./a.out
0x804a01c
0x804a01c
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

  • 为什么链接器将"int global"和"char global"实现为相同的全局变量:
  • 为什么编译器不会抱怨(不是最小的警告-Wall -Wextra -ansi......)
  • 如何管理全局变量的大小(int和char的大小不同)

PS:第二个问题是架构/编译器相关,所以让我们把gcc或Visual C++(对于C)的int大小为32位

编辑:这不是C++的问题,但对于C!

我使用gcc版本4.4.1和Ubuntu 9.10,这是编译控制台输出:

$ ls
global_data1.c  global_data2.c  global_data.c

$ gcc -Wall -Wextra -ansi global_data*.c
$ ./a.out
0x804a01c
0x804a01c
or 
$ gcc -Wall -Wextra -ansi -c global_data*.c
$ …
Run Code Online (Sandbox Code Playgroud)

c compiler-construction variables global-variables

17
推荐指数
2
解决办法
4378
查看次数

如何为类定义"最终"成员函数

是否可以final像在Java中一样创建我的成员函数,以便派生类不能覆盖它们?

c++

17
推荐指数
2
解决办法
8532
查看次数

17
推荐指数
1
解决办法
3296
查看次数