我正在尝试在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;
}
我不确定这个问题的术语是什么,所以只需创建一个新的
答案 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