#include <stdio.h>
char** StringArray ( int n_size )
{
char* astr_allocate[ n_size ];
char** pstr_string_array = astr_allocate;
int n_count;
for ( n_count = 0; n_count < n_size; n_count++ )
*(pstr_string_array + n_count) = " ";
*(pstr_string_array + n_size) = "\0";
return pstr_string_array;
}
char* String ( int n_size )
{
char ach_allocate[ n_size ];
char* str_string = ach_allocate;
int n_count;
for ( n_count = 0; n_count < n_size; n_count++ )
*(str_string + n_count) = ' ';
*(str_string + n_size) = '\0';
return str_string;
}
void main ()
{
int n_size = 5;
int n_count ;
char* pch_string = String ( n_size );
char** pstr_string = StringArray ( n_size );
for ( n_count = 0; n_count < n_size; n_count++ )
printf ( "%c", *(pch_string + n_count) );
for ( n_count = 0; n_count < n_size; n_count++ )
printf ( "%s", *(pstr_string + n_count) );
printf ( "\n\n" );
}
这会产生“???”的精彩输出(文字问号)和随机的东西。我只是想更多地了解指针和字符串类型的东西,如果有人可以提供帮助,那将是非常好的!
另外:在linux终端和nano中编写和编译它,如果改变了什么
答案 0 :(得分:1)
我建议您更多地研究数组,指针和字符串。
int main (void)
。int arr[2];
的项目具有索引[0]和[1]。因此,您无法以arr[2] = ...
或*(arr + 2) = ...
的形式访问它,因为它指向数组的末尾。*(pstr_string_array + n_count) = " ";
这样的事情为它分配数据,因为这只会改变指针指向的位置!你没有复制。相反,您必须使用strcpy(pointer, " ", 2)
。" "
与字符数组char arr [2] = {' ', '\0'}
相同。因此像"\0"
这样的代码没有任何意义。*(pointer + n)
与pointer[n]
完全相同。后者更容易阅读,所以尽可能使用该表格。