标签: declaration

C双字符指针声明和初始化

我总是这样宣告

char *c = "line";
Run Code Online (Sandbox Code Playgroud)

是一样的

char c[] = "line";
Run Code Online (Sandbox Code Playgroud)

所以我做到了

char **choices = { "New Game", "Continue Game", "Exit" };
Run Code Online (Sandbox Code Playgroud)

这给了我一个不兼容的指针类型,在哪里

char *choices[] = { "New Game", "Continue Game", "Exit" };
Run Code Online (Sandbox Code Playgroud)

没有.理解这个有什么帮助吗?

c string pointers initialization declaration

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

Java,将null赋给object和声明之间的区别是什么

有什么区别:

  • Object o = null; 和
  • Object o; (只是声明)

有人可以回答我吗?

java null declaration

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

局部变量之前的GOTO

以下代码是否构成未定义的行为,因为我在变量声明之前跳转并通过指针使用它?如果是这样,标准之间是否存在差异?

int main() {
  int *p = 0;
label1: 
  if (p) {
    printf("%d\n", *p);
    return 0;
  }
  int i = 999;
  p = &i;
  goto label1;
  return -1;
}
Run Code Online (Sandbox Code Playgroud)

c goto declaration undefined-behavior

24
推荐指数
3
解决办法
1473
查看次数

将char数组初始化为字符串值,未初始化的索引是否设置为null?

如果我有以下内容:

char test[10] = "#";
Run Code Online (Sandbox Code Playgroud)

test[1]通过test[9]保证\0吗?或者只test[1]保证是\0

c++ initialization declaration

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

数字文字后面的C#后缀

我是C#的新手,想要了解价值观是如何运作的.如果我查看一个正常的整数值,它有三个重要部分:类型,名称和值.

int testInt = 3;
 |    |       |
Type Name   Value
Run Code Online (Sandbox Code Playgroud)

但是当我看到浮点值时,由于后缀,它会让我感到困惑F.

float testFloat = 3.0F;
  |      |        |  |
 Type   Name  Value Type
Run Code Online (Sandbox Code Playgroud)

现在有两种类型,如果没有F后缀,则值为double.但是,当我可以用声明双变量时,为什么会发生这种情况

double testDouble = 3.0D;
Run Code Online (Sandbox Code Playgroud)

double作为第一个词应该是足够了,不应该吗?带有后缀M的十进制值也是如此:

decimal testDecimal = 3.0M;
Run Code Online (Sandbox Code Playgroud)

然后,当涉及到其他后缀时,它开始让我感到困惑:

ulong bigOne = 2985825802805280508UL;
Run Code Online (Sandbox Code Playgroud)

ulong之前在测试中使用过,并且知道它u是"无符号"的,并且它的值是正常值的两倍.然后你再次得到U作为后缀,谷歌的文字就像谷歌说的那样.据我了解,"文字"是包含数字的值类型.但我不明白的是,即使没有后缀,为什么这个ulong工作呢?

ulong bigOne = 2985825802805280508;
Run Code Online (Sandbox Code Playgroud)

然后我尝试了不同的东西来理解后缀的重要性

byte testLong = 12312UL;
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为字节(254)的值太高而后缀不会将其转换为长变量.

为什么第一个单词(类型)不足以申报?第一个词应该足以告诉类型.最好的做法是始终为值赋予后缀吗?

c# declaration literals variable-declaration

24
推荐指数
2
解决办法
1737
查看次数

int x; int y; int*ptr; 是不是初始化,对吧?

我正在阅读JP Mueller和J. Cogswell撰写的"C++ All-in-One for Dummies"并偶然发现:

#include <iostream>
using namespace std;
int main()
{
    int ExpensiveComputer;
    int CheapComputer;
    int *ptrToComp;
...
Run Code Online (Sandbox Code Playgroud)

这段代码首先初始化所有涉及的东西 - 两个整数和一个指向整数的指针.

只是为了确认,这是一个错误,应该读作'......通过声明',对吧?对我来说,这样的基本错误仍然会出现在书中,这一点很奇怪.

c++ terminology initialization declaration language-lawyer

24
推荐指数
2
解决办法
1823
查看次数

C中的声明或定义

来自外部变量Wiki:

如果extern关键字和初始化值都不存在,则该语句可以是声明或定义.由编译器来分析程序的模块并做出决定.

我无法完全理解关于C的这个陈述的含义.例如,它是否意味着:

int i;
Run Code Online (Sandbox Code Playgroud)

不一定是声明(因为我一直假设到现在为止),但可能是一个定义,以及(通过定义和声明在同一网页的定义,没有双关语意)?

简而言之,就是上述陈述:a.只是声明,或b.声明+定义?

参考:变量声明和定义

收到的答复摘要:

                         Declaration    Definition    Tentative Definition   Initialized 
int i;   (inside a block)    Yes           Yes                No                No
int i=5; (inside a block)    Yes           Yes                No               Yes(to 5)
int i;   (otherwise)         Yes            No               Yes               Yes(to 0)
extern int i;                Yes            No                No                No


All definitions are declarations but not vice-versa.
Run Code Online (Sandbox Code Playgroud)

c declaration definition

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

根据列类型声明变量类型

在Oracle的PL-SQL中,您可以声明一个变量并根据表列定义其类型:

declare var1 table.column%TYPE;
Run Code Online (Sandbox Code Playgroud)

是否可以在MS SQL Server中执行类似的操作?

sql-server variables types declaration

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

是Type(:: x); 有效?

虽然讨论Type(identifier);语法和它是如何声明,我碰到Type(::x);不锵工作.我希望给定一个全局变量x,它将被::x视为一个表达式(::x + 2作品)并转换::xType.但是,它给出了编译器错误.

这是一个简短的例子:

int x;

int main() {
    int(::x); //does not compile
    int(::x + 2); //compiles
}
Run Code Online (Sandbox Code Playgroud)

Clang 3.5给出的编译器错误是:

错误:'x'的定义或重新声明不能命名全局范围

但是,GCC 4.9.0编译就好了.这段代码有效吗?

c++ expression compiler-errors declaration language-lawyer

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

将数组的值分配给一行中的变量

我可以将数组中的每个值分配给C#中的一行中的变量吗?这是Ruby代码中我想要的一个例子:

irb(main):001:0> str1, str2 = ["hey", "now"]
=> ["hey", "now"]
irb(main):002:0> str1
=> "hey"
irb(main):003:0> str2
=> "now"
Run Code Online (Sandbox Code Playgroud)

我不确定我在C#中是否可能需要什么.

编辑: 对于那些暗示我只是将字符串"嘿"和"现在"分配给变量的人,这不是我想要的.想象一下:

irb(main):004:0> val1, val2 = get_two_values()
=> ["hey", "now"]
irb(main):005:0> val1
=> "hey"
irb(main):006:0> val2
=> "now"
Run Code Online (Sandbox Code Playgroud)

现在,该方法get_two_values返回字符串"hey"和"now" 的事实是任意的.实际上它可以返回任何两个值,它们甚至不必是字符串.

c# arrays string initialization declaration

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