相关疑难解决方法(0)

C++字符串:[] vs.*

一直在想,用[]或*声明变量之间的区别是什么?我看待它的方式:

char *str = new char[100];
char str2[] = "Hi world!";
Run Code Online (Sandbox Code Playgroud)

..应该是主要的区别,虽然我不确定你是否可以做类似的事情

char *str = "Hi all";
Run Code Online (Sandbox Code Playgroud)

..因为指针应该引用一个静态成员,我不知道它是否可以?

无论如何,真正困扰我的是知道以下两者之间的区别:

void upperCaseString(char *_str) {};
void upperCaseString(char _str[]) {};
Run Code Online (Sandbox Code Playgroud)

所以,如果有人能告诉我差异,我将不胜感激吗?我有一种预感,除了一些特殊情况外,两者都可以编译得相同吗?

c++ syntax pointers reference

18
推荐指数
2
解决办法
3922
查看次数

C演员到底做了什么?

我写了越来越多的C应用程序,现在我想知道关于强制转换的东西.在C++中,动态强制转换是一种非常昂贵的操作(例如向下转换),但我甚至不知道静态转换.

在C中,我不得不写这样的东西:

assert ( p ); /* p is void* */
int v = *(int*)p;
Run Code Online (Sandbox Code Playgroud)

它是一个"C动态演员"吗?它static_cast<int*>(p)与C++ 完全相同吗?它要多少钱?

提前致谢.

c types casting

10
推荐指数
3
解决办法
2496
查看次数

这个表达式(char*)在C中的含义是什么?

这里对C很新,我认为我几乎没有掌握指针的概念,但语法有点令人困惑所以我在试图理解这个表达式的x = (char *) &a;含义时遇到了麻烦.

其余功能供参考:

#include<stdio.h> 
int main() 
{ 
   int a; 
   char *x; 
   x = (char *) &a; 
   a = 512; 
   x[0] = 1; 
   x[1] = 2; 
   printf("%d\n",a);   
   return 0; 
}
Run Code Online (Sandbox Code Playgroud)

更具体地说,为什么有必要写x = (char *) &a;而不是仅仅x = &a;?添加了(char *)什么来改变表达式?

c pointers memory-address

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

标签 统计

c ×2

pointers ×2

c++ ×1

casting ×1

memory-address ×1

reference ×1

syntax ×1

types ×1