c和指针程序6.2与6.3 分析
来源:互联网 发布:如何开启javascript 编辑:程序博客网 时间:2024/05/16 05:02
我觉得内存模型大概是如此:
如果改变strings++那么指针将会指向第二行,如果使用(*strings)那么指针将会向后移动一列。
在find_char1函数中:
char *string;
while((string = *strings++)!=NULL){ //将会改变令指针数组指向下一行?
while(*string !=’\0’){
printf(“%c\n”,*string);
if(*string++ == value)
return 1;
}
}
在 find_char2函数中:
while(strings!=NULL){
while(**strings!=’\0’){
printf(“%c\n”,*(*strings));
if(*(*strings)++ == value)//将会改变指针数组指向后面一个数据?
return 1;
}
strings++;
但是最后的结果运行函数一并没有改变?
由于指针数组中每一行类型是数组并没有指针控制,而在每一个指针中却有指针控制。所以*(*strings)便改变了
比如对于定义中的*string[2];
输出第一个数组第二个数组:
printf(“%c\n”,*string[0]+1);
include
include
include “assert.h”
int find_char1(char **,char);
int find_char2(char **,char);
int main(int argc, char *argv[])
{
char *string[2] = {“12”,”34”};
find_char1(string,’1’);
printf(“\t%s\n”,*string);
find_char2(string,’1’);
printf(“\t%s\n”,*string);
system("pause");return 0;
}
int
find_char1(char **strings ,char value){
char *string;
while((string = *strings++)!=NULL){
while(*string !=’\0’){
printf(“%c\n”,*string);
if(*string++ == value)
return 1;
}
}
return 0;
}
int
find_char2(char **strings,char value){
//assert(strings!=NULL);
while(strings!=NULL){
while(**strings!=’\0’){
printf(“%c\n”,*(*strings));
if(*(*strings)++ == value)
return 1;
}
strings++;
}
return 0;
}
- c和指针程序6.2与6.3 分析
- 【c程序】数组与指针
- 【C语言提高16】数组中括号与指针关系和数组名常量指针分析
- c和指针 前三章知识点以及常见的问题和程序分析
- C语言数组与指针定义分析
- c语言指针与内存分析
- c++:分析智能指针与发展历史
- C和指针开头的程序
- 《C和指针》经典入门程序
- c和指针中的一个程序
- C语言指针和内存分析小计
- c常量指针与指针常量情况分析
- C语言指针总结之程序举例分析
- 《c和指针》笔记--getchar()与EOF
- 通过3个程序分析数组与指针区别
- 【C/C++和指针】深度解析---指针与数组 【精华】
- 【C/C++和指针】深度解析---指针与数组 【精华】
- 【C/C++和指针】深度解析---指针与数组 【精华】
- poj 3620 Avoid The Lakes
- UVa 10006 - Carmichael Numbers
- poj 3159 Candies(差分约束系统)
- POJ 1456:Supermarket【贪心】
- 【Stanford CNN课程笔记】3. 梯度下降法
- c和指针程序6.2与6.3 分析
- VIM中文乱码原理详解及终极解决方案[经典]
- 线索二叉树
- 【Western Digital】固件区学习之03模块
- 织梦dedecms内容页如何调用作者头像和其他信息
- 前端兼容
- java 异常详解
- Error when loading the SDK:发现了以元素 'd:skin' 开头的无效内容
- MySQL存储引擎介绍