(转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