c中的字符串指针数组与字符

c语言中要定义字符串的数组可以定义字符串指针数组,数组中定义了几个字符串指针

字符串数组指针的赋值:
字符串指针数组仅仅只是定义了几个指针,还需要为每个指针分配相应的内存空间

char *p[4];for(int i=0;i<4;i++){    p[i]=(char*)malloc(10*sizeof(char));//为每个指针分配空间    //然后scanf/gets;
    p[i]="asdfgh";
    //scanf("%s",p[i]); //在后面添加flush(stdin);清空回车符
    //gets(p[i]);//gets会直接读取遗留在缓冲区的回车符}

fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上。

字符串指针数组打印输出:
for(int i=0;i<4;i++){
   printf("%s\n",p[i]);
}


分析字符串与字符
 
 
char ac[10]="hello"; 
char *d; 
d=(char*)malloc(sizeof(char)*100); 
scanf("%s",d); //假设键盘输入qwer 
printf("%s\n",d);     //打印输出qwer 
*d='j';     //将字符串的第一个字符修改为j 
printf("%c\n",*d);    //打印字符串的第一个字符,打印输出j 
printf("%s\n",d);     //打印d地址所存储的字符串,打印输出jwer /
//printf("%s\n",*d); //系统会将d地址所指向的字符认证为字符串的内存地址,并从这个地址指向处读取字符串直到'\0' printf("%p\n",ac);    //打印字符数组的地址,%p是以十六进制格式输出 
printf("%p\n",&ac); //打印字符数组的地址,%p是以十六进制格式输出 printf("%p\n",d);     //d是存储的字符串的首地址,并以十六进制格式打印输出 
printf("%x\n",d);     //d是存储的字符串的首地址,并以十六进制格式打印输出 
printf("%d\n",d);     //d是存储的字符串的首地址,并以十进制格式打印输出 
printf("%p\n",&d);    //&d是存储的字符串指针的首地址的内存地址,并以十六进制格式打印输出  
printf("%p\n",*d); //*d此处是字符j,打印输出其十六进制的ASCII码 
printf("%d\n",*d);    //打印j的十进制ASCII码 
printf("%p\n",*(d+1));//*(d+1)此处是字符w,打印输出其十六进制ASCII码 
printf("%d\n",*(d+1));//打印输出w的十进制ASCII码


猜你喜欢

转载自blog.csdn.net/y649014081/article/details/79328226