小编Des*_*Ice的帖子

指针创建常量字符串文字,为什么?

我正在阅读一些说明这一点的文件

第一个案例

char * p_var="Sack";     
Run Code Online (Sandbox Code Playgroud)

将创建一个常量字符串文字.

因此代码就像

  p_var[1]="u";             
Run Code Online (Sandbox Code Playgroud)

因为那个财产会失败.

第二个案例

还提到的是,这仅适用于字符文字,而不适用于通过指针的其他数据类型.所以代码就像

float *p="3.14"; 
Run Code Online (Sandbox Code Playgroud)

将失败,导致编译器错误.

但是,当我尝试它时,我没有得到编译器错误,访问它虽然给了我0.000000f(在Ubuntu上使用gcc).

所以关于上面,我有三个问题:

  1. 为什么在First Case中创建的字符串文字是只读的?

  2. 为什么只允许创建字符串文字,而不是像浮点指针那样的其他常量?

3.为什么Second Case没有给我编译错误?

更新

请丢弃第3个问题和第2个案例.我通过添加引号来测试它.

谢谢

c pointers constants

2
推荐指数
1
解决办法
1470
查看次数

限制python中组合/排列的数量

我将使用itertools生成一些组合,当我意识到随着元素数量的增加,所花费的时间将呈指数增长.我可以限制或指示要生成的最大排列数,以便itertools在达到该限制后停止.

我的意思是:

目前我有

#big_list is a list of lists
permutation_list = list(itertools.product(*big_list))
Run Code Online (Sandbox Code Playgroud)

目前,这种排列列表有超过600万个排列.我很确定如果我添加另一个列表,这个数字将达到十亿大关.

我真正需要的是大量的排列(比方说5000).有没有办法限制生成的permutation_list的大小?

python list permutation python-itertools

2
推荐指数
1
解决办法
2618
查看次数

Netty:Boss Event Loop和Executor

在我目前使用Netty的大多数示例中,我看到boss执行器是一个缓存的线程池.根据我的理解,事件循环应该只有一个线程,为什么我们需要一个缓存的线程池用于boss事件循环?

java event-loop netty

2
推荐指数
1
解决办法
5069
查看次数

我应该使用哪种类型的指针?ptrdiff_t还是void*?

哪一行是定义指针​​的正确(最佳)方式?

typedef ptrdiff_t pointer; // pointers are ptrdiff_t.

          -- or --

typedef void* pointer; // pointers are void*.


pointer ptr = malloc(1024);
Run Code Online (Sandbox Code Playgroud)

c pointers c89

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

为什么telnet只在Enter上发送数据?

我正在玩Java套接字,telnet似乎是一个模拟tcp客户端的好程序.

我不明白为什么telnet只在输入上发送数据?我不是在寻找黑客让它立即发送数据(因为它是可用的(通过telnet发送数据而不按回车))但我想了解telnet的内部工作/设计,这似乎是天生的.

sockets telnet

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

c ++ 11中的线程id行为

我正在经历对c ++ 0x(C++ 11)中存在的多线程的新支持.

因此,每个线程都有一个std :: thread:id类型的唯一标识符.

考虑以下示例程序:

void hello_world()
{
  std::cout<<"hello_world \n";
}

int main()
{

    std::cout<<"Main thread id is "<<std::this_thread::get_id()<<"\n";

    std::thread t(hello_world);

    std::cout<<"Child thread id is ";
    std::cout<<t.get_id()<<"\n";
    t.join();
}
Run Code Online (Sandbox Code Playgroud)

我有一个示例输出如下:

主要线程ID是140502917359424

子线程ID是140502900623104

你好,世界

我的示例输出中主线程的线程ID大于子线程id的线程ID.

线程ID完全独立于它们的启动时间吗?

如果不是:有没有办法区分线程T1是否比线程T2早于线程T2?

c++ multithreading c++11

0
推荐指数
1
解决办法
654
查看次数

Netty:绑定不匹配

我是java的新手,并且正在尝试使用Netty来构建示例tcp服务器.这是我目前的情况

package http_server;

import java.net.InetSocketAddress;
import java.nio.channels.SocketChannel;

import netty_tutorial.EchoServerHandler;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.ServerSocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;


class server
{
      ServerBootstrap bootstrap;
      int port;

      server(int port_)
      {
          port = port_;

          bootstrap = new ServerBootstrap();

          bootstrap.group(new NioEventLoopGroup());
          bootstrap.channel(NioServerSocketChannel.class);
          bootstrap.localAddress(new InetSocketAddress(port));

          /**
           * Add handlers using anonymous class
          */

          /****PROBLEMATIC LINE*****/
          bootstrap.childHandler(new ChannelInitializer<SocketChannel>()
          {


            @Override
            protected void initChannel(SocketChannel ch) throws Exception {
                // TODO Auto-generated method stub
                System.out.println("hello");
            }

          }
          ); 


      }
}

public class simple_server
{

    public …
Run Code Online (Sandbox Code Playgroud)

java abstract-class nio netty

0
推荐指数
1
解决办法
335
查看次数