char指针的加法和减法

时间:2016-02-17 14:50:13

标签: c arrays pointers

我正在尝试在C中为char *添加和/或减去数字 此代码由于某种原因不起作用。虽然使用没有指针的char工作。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main (int argc, char *argv[])
{
    char *A;

    *A = 'A';
    *A += 1;

    printf("%c",*A);
    return 0;
}

我不确定这个问题的术语是什么,所以只需创建一个新的

3 个答案:

答案 0 :(得分:6)

您尚未为字符分配空间且指针未初始化,因此取消引用指针将导致未定义的行为。

事先将其初始化为:

char a;
char* A = &a;

或仅使用char并使用&a获取指向它的指针。

答案 1 :(得分:4)

这是未定义的行为,因为A没有指向任何内容,而您解除引用

将其指向自动变量:char c; char* A = &c;,或将其设置为malloc来电的返回。

请注意,必须初始化您指向的char的值,否则*A += 1;的行为也将被定义。幸运的是,你实际上是用你的陈述*A = 'A';来做到这一点。

答案 2 :(得分:1)

key: 必须声明并初始化指针。

----一般语法----

声明:
数据类型* pointer_name;

初​​始化:
pointer_name = variable_address

示例:

    char a = 'A' ;
    char *ptr ;        //pointer declaration
    ptr = &a ;         //pointer initialization

    char a = 'A' ;
    char *ptr = &a ;   //initialization and declaration together.

所以你的代码看起来像这样:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main (int argc, char *argv[])
{ 
  char a = 'A';
  char *A = &a;

  *A = 'A';
  *A += 1;

  printf("%c",*A);
  return 0;
}

输出: B