字符串指针
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void tmp(char *str)
{
printf("2222 %p,%p\n",&str,str);
str = "123456";
printf("3333 %p,%p\n",&str,str);
}
void main()
{
char *a=malloc(sizeof(char)*6);
printf("1111 %p,%p\n",&a,a);
tmp(a);
printf("%s\n",a);
printf("Done\n");
}
结果:
1111 0xbfcfe26c,0x8cce008
2222 0xbfcfe250,0x8cce008
3333 0xbfcfe250,0x80485cc
Done
整型指针:
#include <stdio.h>
#include <stdlib.h>
void tmp(int *nu,char *ch)
{
printf("2222 &nu is %p,nu is %p,&ch is %p,ch is %p\n",&nu,nu,&ch,ch);
*nu = 15;
*ch = 'a';
printf("3333 &nu is %p,nu is %p,&ch is %p,ch is %p\n",&nu,nu,&ch,ch);
}
int main()
{
int *a = malloc(sizeof(int));
char *c = malloc(sizeof(char));
printf("1111 &a is %p,a is %p,&c is %p,c is %p\n",&a,a,&c,c);
tmp(a,c);
printf("a is%d,c is %c\n",*a,*c);
printf("Done\n");
}
结果:
1111 &a is 0xbfd32518,a is 0x83c9008,&c is 0xbfd3251c,c is 0x83c9018
2222 &nu is 0xbfd324f0,nu is 0x83c9008,&ch is 0xbfd324f4,ch is 0x83c9018
3333 &nu is 0xbfd324f0,nu is 0x83c9008,&ch is 0xbfd324f4,ch is 0x83c9018
a is15,c is a
Done