#include <malloc.h> #include <stdio.h> int main() { //数组元素指针和数组的指针是两个不同的概念 //数组元素的指针[通常操作的指针] printf("/n-----------------数组元素的指针[从栈上分配内存]-------------------------/n"); char chararry[20]; char * pCharArray = chararry;//声明指向数组元素的指针pCharArray pCharArray = "you are good!";//通过指针给数组赋值 printf(pCharArray);//显示这个指针所指向的数组内容 printf("/n"); printf("/n-----------------数组元素的指针[从堆上分配内存]-------------------------/n"); void * pAddress = malloc(20); char* pCharArrayFromHeap = (char *)pAddress; pCharArrayFromHeap = "you are good"; printf(pCharArrayFromHeap); printf("/n"); free(pAddress); printf("/n-----------------指向具有n(这里n为12)个元素的数组的指针------------------/n"); //声明一个二维数组 char myCharArry[3][19]={ {'y','o','u',' ','a','r','e',' ','g','o','o','d','/0'}, {'a','b','/0'}, {'c','d','/0'} }; //指向具有n(这里n为12)个元素的数组的指针[其实就是一个指向一维数组的指针],指针加一该是加多少字节??? char (*pMyCharArray)[19] = myCharArry; printf("指针值:%x,/t%s",pMyCharArray,(char *)pMyCharArray); printf("/n"); printf("指针值:%x,/t%s",pMyCharArray,(char *)(++pMyCharArray));//指针加一 printf("/n"); printf("指针值:%x,/t%s",pMyCharArray,(char *)(++pMyCharArray));//指针加一 printf("/n"); return 0; }