C++指针初始化

(转http://www.nowamagic.net/librarys/veda/detail/2128)
int
i; int *pi; i = 30; pi = &i; printf("%d ", i); printf("%d ", *pi); printf("%d ", &i);

#include "stdio.h"

main()
{
    char a,*pa;
    a = 10;
    pa = &a;
    *pa = 20;
    printf("%d", a);
}

输出:20

通过指针访问数组元素

int i, *pa, a[] = {3,4,5,6,7,3,7,4,4,6};
pa = a; /*请注意数组名a直接赋值给指针pa*(a的首地址赋给pa)/
for (i = 0; i <= 9; i++)
{
    printf("%d
", pa[i]);
}

int i, *pa, a[] = {3,4,5,6,7,3,7,4,4,6};
pa = a;
for (i = 0; i <= 9; i++)
{
    printf("%d
", *(pa+i));
}

i = 30; 

int *pi;

使用“int *pi”声明指针变量—— 其实是在内存的某处声明一个一定宽度的内存空间,并把它命名为pi。

pi = &i;//pi储存的是i的地址

printf("%d", *pi);

*pi是pi所指地址的内容,即printf输出30

*pi = 40;

则此时

printf("%d", i);输出40

1 int i = 1;
2 int *pi;//声明指针变量,在内存的某处声明一个一定宽度的内存空间,并把它命名为pi
3 pi = &i;//给pi赋值,pi储存的是i的内存地址;&i 返回i变量的内存地址
4 cout<<*pi<<endl;//输出结果为 1
5 *pi = 2;//为pi所指向的内存地址赋值,即i = 2
6 cout<<i<<endl;//输出结果为 2
7 cout<<*pi<<endl;//输出pi所指向的内存地址的值,输出结果2

 指针初始化方法:

1、定义时直接初始化,即赋值一个已有变量的内存地址

int a;

int *p = &a;

2、开辟一块新的内存空间

int *p = (int*)malloc(sizeof(int));

 free(p);
 p=NULL;/*请加上这句*/

    char *a = "abc111";
    char b[] = "abc111";

    cout<<sizeof(a)<<endl;//a为指针  4
    cout<<sizeof(*a)<<endl;//*a指向字符串首地址的字符  1
    cout<<sizeof(b)<<endl;//b表示字符串  7

    cout<<strlen(a)<<endl;//6
    cout<<*a<<endl;//a
    cout<<a[0]<<endl;//a
原文地址:https://www.cnblogs.com/onwayo/p/3536560.html