main(int argc, char** argv) 的char** 是什么意思?

来源:百度知道 编辑:UC知道 时间:2024/05/15 07:58:23
#ifndef NESTED_H_
#define NESTED_H_

struct stack {
struct link{
void* data;
link* next;
void initialize(void* data, link* next);
} *head;
void initialize();
void push(void* data);
void* peek();
void* pop();
void cleanup();
};
#endif

#include <STDLIB.H>
#include <ASSERT.H>

void stack::link::initialize(void* data, link* next)
{
data = data;
next = next;
}

void stack::initialize()
{
head = 0;
}

void stack::push(void* data)
{
link* newLink = (link*)malloc(sizeof(link));
assert(newLink);
newLink->initialize(data, head);
head = newLink;
}

void* stack::peek()
{
return head->data;
}

void stack::cleanup()
{
link* cursor = head;
while(head)
{
cursor = cursor->next;
free(head->data);
fr

指向char *的指针,指向字符指针的指针

int argc, char** argv

这两个是参数相关的东西,你的函数里面没用到,不用管它

argc - 1是参数的数目,第一个参数是程序名,所以argc至少有1,如果argc大于1的话,说明有参数输入
argv是参数列表,argv[1]是第一个参数的名字

assert(argc == 2); //判断是否有一个参数输入
textlines.initialize();
file = fopen(argv[1], "r"); //传入的参数作为文件名,打开文件
assert(file);

比如你用命令行打开可执行文件的时候,可以使用命令行参数,如果你有多个命令行参数,那么它们可以组成一个,字符串数组,也就是字符的二维数组,所以是
char ** argv 也就是 char arg[][]