C分段fault-char指针

spa*_*ara 0 c encryption segmentation-fault

我需要帮助搞清楚为什么我在这里遇到分段错误.我已经过去了,我认为我的指针做错了,但我可以搞清楚是什么.

我的计划:

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

void encrypt(char* c);

//characters are shifted by 175

int main(){

char* a;
*a = 'a';
/*SEGMENTATION FAULT HERE!*/

encrypt(a);
printf("test:%c/n",*a);

return 0;

};
void encrypt(char* c){
    char* result;
    int i=(int)(*c);
    i+=175;
    if(i>255)
    {
            i-=256;
    }
    *c=(char)i;

};
Run Code Online (Sandbox Code Playgroud)

Vau*_*ato 7

问题出在这里:

char *a;
*a = 'a'
Run Code Online (Sandbox Code Playgroud)

由于变量"a"未初始化,*a ='a'分配给随机存储器位置.

你可以这样做:

char a[1];
a[0] = 'a';
encrypt(&a[0]);
Run Code Online (Sandbox Code Playgroud)

或者甚至只在你的情况下使用一个字符:

int main(){
  char a = 'a';

  encrypt(&a);
  printf("test:%c/n",a);

  return 0;
};
Run Code Online (Sandbox Code Playgroud)