字符指针赋值、传值

1.先来理解一下指针的初始化及赋值 

int main()
{
    char *a;
	cout<<"please input the plaintext"<<endl;
    cin>>a;
    cout<<a;

}

 字符指针赋值、传值

 a=...是给a赋值

*a=...是给a指向的内存赋值

上述代码错误在没有把一个变量的地址赋值给指针

典型的:

int *a;//定义一个放整形变量地址的整形指针

int i; //定义一个整形变量

a = &i;//a指向整型变量i的地址

*a=3;//此时i的值为3,通过指针指向的地址的操作

 

对指针进行初始化时常用的有以下几种方式:

  1.采用NULL或空指针常量,如:int *p = NULL;或 char *p = 2-2; 或float *p = 0;

  2.取一个对象的地址然后赋给一个指针,如:int i = 3;  int *ip = &i;

  3.将一个指针常量赋给一个指针,如:long *p = (long *)0xfffffff0;

  4.将一个T类型数组的名字赋给一个相同类型的指针,如:char ary[100]; char *cp = ary;

  5.将一个指针的地址赋给一个指针,如:int i = 3;  int *ip = &i;int **pp = &ip;

  6.将一个字符串常量赋给一个字符指针,如:char *cp = “abcdefg”;
摘自:https://blog.csdn.net/mhjcumt/article/details/7351032

2.正确的字符串为字符指针赋值

int main()
{
	char plaintext[100];
	char *a=NULL;
	cout<<"please input the plaintext"<<endl;
	cin>>plaintext;
	a=plaintext;
	cout<<"a的值:"<<a<<endl;
	cout<<"*a的值:"<<*a<<endl;
}

字符指针赋值、传值 

 

 字符指针赋值、传值

 3.传值:形参为*plaintext,指针指向字符串第一个字符h

void Transform(char *plaintext)
{
	cout<<"传过来的plaintext:"<<plaintext<<endl;
	cout<<"*plaintext:"<<*plaintext<<endl;
}

字符指针赋值、传值