小编use*_*929的帖子

在mac上编辑我的vimrc文件

我正在使用Mac OSX(10.9),我正在尝试通过添加"set number"来配置我的vimrc文件.我在user/share/vim /中找到了我的vimrc文件,但我无法编辑它,因为它是只读的.我该如何解决这个问题并阅读它?

vim

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

C中的字符操作

当你将一个角色转换为C中的int时,到底发生了什么?由于字符是一个字节而int是四个,你怎么能得到一个字符的整数值?它是被视为数字的位模式吗?以角色'A'为例.位模式01000001(即二进制65)?

c arithmetic-expressions char

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

在c中打印指针中的指针差异

考虑一下代码:

int main() {
    char orange[5];
    for (int i = 0; i < 5; i++)
        orange[i] = 1;
    printf("orange: %d\n", *((char *)orange));        
    printf("orange: %d\n", *((int *)orange)); 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

第一个print语句给了我一个值1,但是第二个print语句给了我一个值16843009.差异的原因是什么?

c pointers casting

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

二维数组指针运算

假设我有一个 int 数组:int arr[5][5]并假设 C 语言内存管理。

我想仅使用指针算术和取消引用来访问数组的特定元素。

假设我想访问以下元素: arr[i][j]

我一开始尝试打印一些内容来了解​​地址是如何工作的。arr我打印了、arr+1、 、arr+2、的地址arr+5

结果如下:

0x7fff58475b80
0x7fff58475b94
0x7fff58475ba8
0x7fff58475be4
Run Code Online (Sandbox Code Playgroud)

我想知道为什么每个地址之间的差异是 14(十六进制)或 20(十进制)。

另外,当您在堆栈上创建一个二维数组时,是否会创建一个指向内存块指针数组的指针?这就是我假设我们为数组分配空间的方式:

  1. 在堆栈上分配一个指针arr
  2. 指针arr保存指针数组起始位置的地址。
  3. 该指针数组包含二维数组中行的起始位置。

它是否正确?

编辑:另外,假设您想通过指针算术访问 arr[i][j] 。这将如何完成?如果数组是动态分配的,我认为你可以这样做 *( * (arr+i)+j)。我不确定你如何对静态分配执行此操作?我的猜测是 *(arr + ((row_size * (i))+j))。它是否正确?

c c++ arrays pointers

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

标签 统计

c ×3

pointers ×2

arithmetic-expressions ×1

arrays ×1

c++ ×1

casting ×1

char ×1

vim ×1